バインディングが動作していないため、私が知っている唯一の方法はわかりません。 。WPF CheckBox IsCheckedバインディングの問題
XAML:
<CheckBox Grid.Row="6" Grid.Column="1" IsChecked="{Binding Path=CurSerialPort.ExpansionEnabled}" Margin="7" VerticalAlignment="Stretch" ToolTip="Select whether DHCP is enabled.">
<CheckBox.Style>
<Style TargetType="{x:Type CheckBox}" BasedOn="{StaticResource {x:Type CheckBox}}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=CurSerialPort.ShowExpansionEnable}" Value="False">
<Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>
</Style.Triggers>
</Style>
</CheckBox.Style>
問題の結合:
IsChecked="{Binding Path=CurSerialPort.ExpansionEnabled}"
のDataContext:
private void Page_Loaded(object sender, RoutedEventArgs e)
{
this.DataContext = main.Model;
}
main.Modelが含まれています:
/// <summary>
/// The currently selected serial port
/// </summary>
public SerialModel CurSerialPort
{
get { return this.curSerialPort; }
set
{
if (value != null)
{
this.curSerialPort = value;
}
RaisePropertyChanged("CurSerialPort");
}
}
SerialModelが含まれています:それは働いていないですよう
/// <summary>
/// Expansion Enable
/// </summary>
public bool ExpansionEnable
{
get
{
return this.expansionEnable;
}
set
{
this.expansionEnable = value;
}
}
がバインドされています。 ExpansionEnableのsetとgetは、ページのチェックボックスを反映していません。
私はちょうど追加することができます知っている:モデルへ
public bool CurSerialPortExpansionEnable
{
get { return CurSerialPort.ExpansionEnable; }
set { CurSerialPort.ExpansionEnable = value; }
}
、これは、それが全体としてメインモデルに関連するプロパティで行われている方法ですので、私はしたくないが、動作しますバインディング我々は複数のインスタンスを持っているすべてのオブジェクトのためのこのような単一のプロパティを追加し続けなければならず、バインディングが上記のようなソリューションを見つけることを本当にしたいと思います。
IsChecked="{Binding Path=CurSerialPort.ExpansionEnabled}"
編集:私が変更した内容はわかりませんが、実際は完全に機能します。以下の答えは、RaisePropertyChangedを忘れているが、それ以外のすべての問題が今は良いようだと指摘した。
定義が機能していません。ゲットセットは呼び出されていますか? – Paparazzi