Строка данных расширяется при щелчке строки в серебряном свете - PullRequest
0 голосов
/ 30 августа 2011

У меня есть приложение Silverlight, в котором я добавил одну кнопку-переключатель для раскрытия строки. В то же время у меня есть 2 текстовых поля и 1 кнопка на одной строке. Моя кнопка переключения работает нормально, но когда я нажимаю на текстовое поле или кнопки, строки раскрываются что не должно происходить. Строка должна быть развернута только при нажатии кнопки переключения. PLZ, направьте меня, когда я ошибаюсь. моя кнопка переключения добавлена ​​как показано ниже .xaml

<data:DataGridTemplateColumn.CellTemplate>
      <DataTemplate>
             <ToggleButton Style="{StaticResource PlusMinusToggleButtonStyle}"    Loaded="ToggleButton_Loaded" />
       </DataTemplate>
</data:DataGridTemplateColumn.CellTemplate>

и код .cs как показано ниже

 private void ToggleButton_Loaded(object sender, RoutedEventArgs e)
        {
            ToggleButton button = sender as ToggleButton;
            DataGridRow row = button.FindAncestor<DataGridRow>();  //Custom Extension
            row.SetBinding(DataGridRow.DetailsVisibilityProperty, new System.Windows.Data.Binding()
            {
                Source = button,
                Path = new PropertyPath("IsChecked"),
                Converter = new VisibilityConverter(),
                Mode = BindingMode.TwoWay
            });
    }

и интерфейс IValueConverter реализован, как показано ниже

public class VisibilityConverter : IValueConverter
    {

        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if ((bool)value) return Visibility.Visible;
            else return Visibility.Collapsed;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if ((Visibility)value == Visibility.Visible)
                return true;
            else return false;

        }
    }

Какое условие мне нужно проверить при конвертировании и ConvertBack.И как я могу проверить, что нажатый объект - это кнопка переключения, а не другая кнопка

1 Ответ

0 голосов
/ 30 августа 2011

Вы можете написать тот же код, который вы написали для события ToggleButton_Loaded в событии ToggleButton_clicked, тогда вам не нужно проверять, для какой кнопки или textBox нажата кнопка.

<ToggleButton Style="{StaticResource PlusMinusToggleButtonStyle}"    Click="ToggleButton_Clicked" />

И код .cs как

private void ToggleButton_Clicked(object sender, RoutedEventArgs e)
        {
            ToggleButton button = sender as ToggleButton;
            DataGridRow row = button.FindAncestor<DataGridRow>();  //Custom Extension
            row.SetBinding(DataGridRow.DetailsVisibilityProperty, new System.Windows.Data.Binding()
            {
                Source = button,
                Path = new PropertyPath("IsChecked"),
                Converter = new VisibilityConverter(),
                Mode = BindingMode.TwoWay
            });
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...