UserControlのバインディングDataContext
とプロパティの奇妙な動作があります。IsEnabled
私のページでは、次のようなUserControlを使用しています。
<httpsPort:HttpsPort DataContext="{Binding Path=Https}"
IsEnabled="{Binding CurrentServiceState, Converter={StaticResource ServiceStateIsConfigableConverter}}" />
そしてこのようなボタン:
<Button Content="start service"
IsEnabled="{Binding CurrentServiceState, Converter={StaticResource ServiceStateIsConfigableConverter}}"
Command="{Binding CmdConfigureService}" [...] />
説明:
コンバーターはcurrentServiceState-Enumをboolに変換します。ボタンは期待どおりに動作します(En / DisAbled)。
問題:ボタンは正しく有効/無効になっていますが、ユーザーコントロールのコントロールは正しくありません。
DataContext(HTTPS)は実際にはnullではありません。
private HttpsPortViewModel _https;
public HttpsPortViewModel Https
{
get
{
if (_https == null)
{
_https = new HttpsPortViewModel();
}
return _https;
}
set
{
_https = value;
NotifyPropertyChanged(() => Https);
}
}
UserControlsバインディングでFallbackValue=Falseを使用しようとしましたが、UserControlが無効になっています...
誰かがこれらの行動を説明できますか?どうもありがとう。
アップデート:
私の回避策:
<Grid IsEnabled="{Binding CurrentServiceState, Converter={StaticResource ServiceStateIsConfigableConverter}}">
<httpsPort:HttpsPort DataContext="{Binding Path=Https}" />
</Grid>