Попытка скрыть флажок, пока не будет выбран пункт меню, но флажок не будет скрыт - PullRequest
0 голосов
/ 09 января 2020

У меня есть флажок, который должен появляться только при выборе пункта меню. Когда пункт меню не выбран, флажок должен быть скрыт. У меня есть настройка переменной видимости в коде:

private Visibility _checkboxVisibility;
public Visibility CheckboxVisibility 
{ 
    get 
    { 
        return _checkboxVisibility; 
    } 
    set 
    { 
        SetProperty(ref _checkboxVisibility, value);
        OnPropertyChanged(nameof(CheckboxVisibility));
    } 
}

Когда я инициализирую модель представления, я удостоверяюсь, что это установлено в Hidden. Для параметра меню установлено значение Visible.

Ниже приведен фрагмент кода XAML:

<ListView.ItemTemplate>
    <DataTemplate>
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="2*" />
                <ColumnDefinition Width="2*" />
                <ColumnDefinition Width="7*" />
                <ColumnDefinition Width="2*" />
                <ColumnDefinition Width="2*" />
            </Grid.ColumnDefinitions>
            <CheckBox Grid.Column="0"
                      IsChecked="{Binding IsSelected, Mode=TwoWay}"
                      Visibility="{Binding CheckboxVisibility, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />

Есть еще столбцы, но это кажется важным битом. Если я установлю его прямо Hidden, флажок будет скрыт, поэтому с моим связыванием что-то не так, но я не уверен, что именно. Я также пытался связать его с логическим значением и использовать конвертер, но это тоже не помогло. Я пытался найти ответ в Интернете, но везде я go вижу привязку другого элемента к флажку. Любая помощь будет оценена.

1 Ответ

0 голосов
/ 09 января 2020

Хорошо, я нашел ответ, и оказалось, что я не дал достаточно разъяснений, чтобы кто-нибудь помог мне. Свойство CheckboxVisibility не было в привязке ItemSource для просмотра списка. Он пытался привязать к нему, как это было. Мне пришлось использовать свойство RelativeSource примерно так:

Visibility="{Binding DataContext.MassImportModeVisibility, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"

Я постараюсь дать достаточно информации в будущем.

...