在我的用戶我有一個複選框WPF複選框事件與綁定的工作不
<CheckBox DockPanel.Dock="Left" VerticalAlignment="Bottom" VerticalContentAlignment="Bottom" x:Name="showLegendsChk" Margin="10,0,0,0"
Content="View Legends" Checked="showLegendsChk_Checked" />
<!--IsChecked="{Binding ElementName=CrossSecViewWnd, Path=ShowLegends, Mode=TwoWay}" -->
我試圖添加數據綁定到它,&增加一些邏輯檢查&非檢查;所以不需要添加事件到相同的。
private bool showLegendsWnd;
public CrossSectionalViewControl() {
FillLegends();
ShowLegends = false;
}
// Using a DependencyProperty as the backing store for
//IsCheckBoxChecked. This enables animation, styling, binding, etc...
public static readonly DependencyProperty ShowLegendsProperty =
DependencyProperty.Register("ShowLegends", typeof(bool),
typeof(CrossSectionalViewControl), new UIPropertyMetadata(false));
public bool ShowLegends
{
get { return showLegendsWnd; }
set
{
showLegendsWnd = value;
NotifyPropertyChanged("ShowLegends");
if (showLegendsWnd == true)
legendWrap.Visibility = System.Windows.Visibility.Visible;
else
legendWrap.Visibility = System.Windows.Visibility.Hidden;
Console.WriteLine("Show Legends = " + showLegendsWnd + " Chk Value = " + showLegendsChk.IsChecked);
}
}
嘗試了很多機智綁定,但沒有成功。最後添加了檢查事件&評論綁定屬性。 -
private void showLegendsChk_Checked(object sender, RoutedEventArgs e)
{
showLegendsWnd = (bool)showLegendsChk.IsChecked;
Console.WriteLine("CHK Show Legends = " + showLegendsWnd + " Chk Value = " + showLegendsChk.IsChecked);
if (showLegendsWnd == true)
legendWrap.Visibility = System.Windows.Visibility.Visible;
else
legendWrap.Visibility = System.Windows.Visibility.Hidden;
legendWrap.UpdateLayout();
}
有了這個此外,即使當複選框選中此項,則不會觸發事件,也不與財產檢查都選中&。 在兩個 - 綁定&事件1狀態事件被正確觸發,但另一個不是!還添加了TwoWay模式,嘗試使用UpdateSourceTrigger進行綁定但未成功。
爲什麼這個奇怪的問題複選框....
Viv,感謝UnChecked事件。 REg綁定,我可以看到調試行只有一次,之後,我改變了多少狀態,調試行不來 - 所以它沒有被解僱/被調用。 – Tvd
@Tvd綁定對我來說工作正常。我編輯了答案並附上了一個可以下載並嘗試的示例。就像我在答案中提到的那樣。所附樣本顯示了三種方法。基於事件的,簡單的綁定,也是一個複雜的綁定,其中的缺血點綁定到自定義控件的DP,然後切換該控件的可見性。所有三種方法都可以正常工作。已經測試它是肯定的。 – Viv