Привязка данных: отключить элемент ComboBox - PullRequest
0 голосов
/ 06 ноября 2018

Я пытаюсь применить это решение к моему делу. Разница лишь в том, что мой ComboBox берет свои предметы из списка enum.

Я всегда получал ошибку выражения привязки к свойству "IsProgrammabile" в стиле ComboBox.

Мой код:

<ListView ItemsSource="{Binding SchedaSelezionata.ListaIngressi}" SelectionMode="Single">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="NR." DisplayMemberBinding="{Binding Numero}" />
            <GridViewColumn Header="FUNCTION" >
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <ComboBox ItemsSource="{Binding Source={helpers:EnumBindingSource {x:Type models:INGRESSI}}}" SelectedItem="{Binding Funzione}"
                            ToolTip="{Binding Descrizione}" IsEnabled="{Binding ConfigurabileDaUtente}" Width="150" >
                            <ComboBox.ItemContainerStyle>
                                <Style TargetType="ComboBoxItem">
                                    <Setter Property="IsEnabled" Value="{Binding Path=IsProgrammabile, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ComboBox}}}"/>
                                </Style>
                            </ComboBox.ItemContainerStyle>
                        </ComboBox>
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
        </GridView>
    </ListView.View>
</ListView>

Обратите внимание, что свойство IsProgrammabile принадлежит тому же объекту, что и другие свойства (Numero, Funzione, Descrizione, ConfigurabileDaUtente). Установка AncestorType на GridView или ListView не помогает.

Можете ли вы дать решение и объяснить, что я не понимаю в этом контексте?

Заранее спасибо

1 Ответ

0 голосов
/ 06 ноября 2018

Сам по себе ComboBox не имеет свойства с именем IsProgrammabile, но его DataContext может иметь, поэтому вам следует добавить «DataContext». к пути привязки:

<Setter Property="IsEnabled" Value="{Binding Path=DataContext.IsProgrammabile, 
                    RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ComboBox}}}"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...