ContentControl в сетке данных с исчезновением Style.Trigger - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть сетка данных с двумя столбцами.Первый столбец содержит ячейки с комбинированным списком с двумя возможными значениями (KoSt, WBKZ).В зависимости от этого значения в столбце 2 должен отображаться другой контентконтроль (текстовое поле, автозаполнение):

values

Если я выберу более одного раза одно значение в первом столбце, чем все другие элементы управления в столбце 2который будет соответствовать этому значению, исчезнет (кроме текущей строки).missing content Почему исчезает весь остальной контент?: (

                <DataGrid x:Name="dataGridAccounting"
    ItemsSource="{Binding CurrentAction.ACCOUNTING_COLLECTION, NotifyOnValidationError=True}"
    AutoGenerateColumns="False">
    <DataGrid.Columns>
        <!-- first column binded to a static list with two values (KoSt, WBKZ)-->
        <DataGridTemplateColumn Header="Konten-Art">
            <!-- shows the value of column1-->
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding KONTEN_ART, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>

            <DataGridTemplateColumn.CellEditingTemplate>
                <!-- lets the user click an item in combobox -->
                <DataTemplate>
                    <ComboBox ItemsSource="{StaticResource AccountingTypeList}"
                              SelectedItem="{Binding KONTEN_ART, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellEditingTemplate>
        </DataGridTemplateColumn>

        <!-- second column. Content disappear when selecting more than one time same value in column 1-->
        <DataGridTemplateColumn Header="content">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <ContentControl>
                        <ContentControl.Style>
                            <Style TargetType="ContentControl">
                                <Style.Triggers>

                                    <DataTrigger Binding="{Binding KONTEN_ART}" Value="KoSt">
                                        <Setter Property="Content">
                                            <Setter.Value>
                                                <toolkit:AutoCompleteBox Text="Value1 was chosen"></toolkit:AutoCompleteBox>
                                            </Setter.Value>
                                        </Setter>
                                    </DataTrigger>
                                    <DataTrigger Binding="{Binding KONTEN_ART}" Value="WBKZ">
                                        <Setter Property="Content">
                                            <Setter.Value>
                                                <TextBox Text="Value2 was chosen"></TextBox>
                                            </Setter.Value>
                                        </Setter>
                                    </DataTrigger>
                                </Style.Triggers>
                            </Style>
                        </ContentControl.Style>
                    </ContentControl>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

1 Ответ

0 голосов
/ 27 сентября 2019

Вместо установки Content из ContentControl в DataTrigger, установите ContentTemplate, как показано ниже

   <DataTrigger Binding="{Binding KONTEN_ART}" Value="KoSt">
        <Setter Property="ContentTemplate">
            <Setter.Value>
                <DataTemplate>
                    <toolkit:AutoCompleteBox Text="Value1 was chosen"></toolkit:AutoCompleteBox>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </DataTrigger>
    <DataTrigger Binding="{Binding KONTEN_ART}" Value="WBKZ">
        <Setter Property="ContentTemplate">
            <Setter.Value>
                <DataTemplate>
                    <TextBox Text="Value2 was chosen"/>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </DataTrigger>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...