2016-04-07 23 views
0

バインディングが動作していないため、私が知っている唯一の方法はわかりません。 。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を忘れているが、それ以外のすべての問題が今は良いようだと指摘した。

+0

定義が機能していません。ゲットセットは呼び出されていますか? – Paparazzi

答えて

2

定義が機能していません。ゲットセットは呼び出されていますか?上記の場合は、スタイルを取り出し、それが何かを壊しているかどうかを確認後、動作しませんSerialModel

public bool ExpansionEnable 
{ 
    get 
    { 
     return this.expansionEnable; 
    } 
    set 
    { 
     if(this.expansionEnable == value) return; 
     this.expansionEnable = value; 
     RaisePropertyChanged("ExpansionEnable"); 
    } 
} 

にNotifyPropertyChanged加えること

してみてください。
しかし、それは私によく見えます。

+0

作業していないと、getまたはsetを打つことができませんでした。良い点は、私はRaisePropertyChecked ....を忘れて信じていない....今はランダムに動作しています。セットとゲットは壊れています。私は真剣に何が変わったのか知りませんが、何らかの理由で私の人生のために仕事ができてうれしいです。私は理由を理解できませんでした。 – Birdbuster

関連する問題