Ich habe eine Bindung, die nicht funktioniert und anstatt es zu beheben die einzige Art und Weise weiß ich, wie ich besser verstehen, warum es nicht funktioniert und welche Möglichkeiten ich außer der einen Lösung, die ich kenne .WPF CheckBox IsChecked Binding Problem
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>
Ausgabe Bindung:
IsChecked="{Binding Path=CurSerialPort.ExpansionEnabled}"
Datacontext:
private void Page_Loaded(object sender, RoutedEventArgs e)
{
this.DataContext = main.Model;
}
main.Model umfasst:
/// <summary>
/// The currently selected serial port
/// </summary>
public SerialModel CurSerialPort
{
get { return this.curSerialPort; }
set
{
if (value != null)
{
this.curSerialPort = value;
}
RaisePropertyChanged("CurSerialPort");
}
}
SerialModel umfasst:
/// <summary>
/// Expansion Enable
/// </summary>
public bool ExpansionEnable
{
get
{
return this.expansionEnable;
}
set
{
this.expansionEnable = value;
}
}
gebunden wird, wenn er nicht funktioniert ist. Das Festlegen und Abrufen von ExpansionEnable spiegelt nicht das Kontrollkästchen auf der Seite wider.
Ich weiß, ich könnte nur noch hinzufügen:
public bool CurSerialPortExpansionEnable
{
get { return CurSerialPort.ExpansionEnable; }
set { CurSerialPort.ExpansionEnable = value; }
}
zum Modell und die Bindung funktioniert, weil das ist, wie es mit Eigenschaften zum Hauptmodell als Ganze im Zusammenhang getan wurde, obwohl ich mag nicht Ich muss für jedes Objekt, für das wir mehrere Instanzen haben, weitere Eigenschaften hinzufügen und würde gerne eine Lösung finden, bei der die Bindung wie oben beschrieben ist.
Edit: Nicht sicher, was ich geändert habe, aber das funktioniert tatsächlich vollständig. Antwort unten zeigte einen Fehler von mir das RaisePropertyChanged zu vergessen, aber anders scheint alles jetzt gut.
Define funktioniert nicht. Werden die Einstellungen überhaupt aufgerufen? – Paparazzi