В моем UserControl У меня есть CheckboxWPF Checkbox Event & Binding не работает
<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 в привязке, но не имели успеха.
Почему это Странная проблема с Checkbox ....
Viv, Спасибо за событие UnChecked. REG Binding, я могу видеть строку Debug только один раз, после этого, насколько я изменяю состояние, строка Debug не приходит - поэтому ее не запускают/не вызывают. – Tvd
@Tvd Связывание отлично подходит для меня. Я отредактировал ответ и приложил образец, который вы можете скачать и попробовать. Как я уже упоминал в ответе. Прилагаемый пример показывает три подхода. Событие, простая привязка, а также сложная привязка, где ischecked привязан к DP настраиваемого элемента управления, который затем переключает видимость этого элемента управления. Все три подхода работают отлично и все время. испытал это, чтобы быть уверенным. – Viv