Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 如何以行的读取模式呈现DataGridComboxColumn列中的文本_Wpf_Xaml_Datagrid - Fatal编程技术网

Wpf 如何以行的读取模式呈现DataGridComboxColumn列中的文本

Wpf 如何以行的读取模式呈现DataGridComboxColumn列中的文本,wpf,xaml,datagrid,Wpf,Xaml,Datagrid,我有一个数据网格,带有一个组合框列,定义为: <!-- Category --> <DataGridComboBoxColumn Header="Category" SelectedValueBinding="{Binding SelectedCategory}" DisplayMemberPath="DisplayName"> <!-- Display mode

我有一个数据网格,带有一个组合框列,定义为:

                <!-- Category -->
                <DataGridComboBoxColumn Header="Category" SelectedValueBinding="{Binding SelectedCategory}" DisplayMemberPath="DisplayName">
                    <!-- Display mode -->
                    <DataGridComboBoxColumn.ElementStyle>
                        <Style TargetType="{x:Type ComboBox}">
                            <Setter Property="Text" Value="{Binding SelectedCategoryDisplayName}" />
                        </Style>
                    </DataGridComboBoxColumn.ElementStyle>

                    <!-- Edit mode -->
                    <DataGridComboBoxColumn.EditingElementStyle>
                        <Style TargetType="{x:Type ComboBox}">
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding Transaction.Type}" Value="Debit">
                                    <Setter Property="ItemsSource" Value="{Binding Source={StaticResource debitCategories}}" />
                                </DataTrigger>
                                <DataTrigger Binding="{Binding Transaction.Type}" Value="Credit">
                                    <Setter Property="ItemsSource" Value="{Binding Source={StaticResource creditCategories}}" />
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </DataGridComboBoxColumn.EditingElementStyle>
                </DataGridComboBoxColumn>
在designer中,这给了我以下错误:

A TwoWay or OneWayToSource binding cannot work on the read-only property 'SelectedCategoryDisplayName' of type XXX
为什么??在
DataGridComboxColumn.ElementStyle
中使用该属性时,为什么WPF关心该属性是只读的。如果我理解正确,
datagridcomboxcolumn.ElementStyle
是单元格读取模式的样式

好的,我在绑定上设置了
,Mode=OneWay
,它停止了抱怨,但没有显示任何内容

如何使组合框在单元格/行的读取模式(非编辑)下显示视图模型提供的文本

为什么??在DataGridComboBoxColumn.ElementStyle中使用该属性时,为什么WPF关心该属性是只读的

因为您绑定到ComboBox的Text属性,并且默认情况下该属性是双向的。源属性必须具有公共setter,或者需要将绑定模式设置为单向

如何使组合框在单元格/行的读取模式(非编辑)下显示视图模型提供的文本

试试这个:

<DataGridComboBoxColumn.ElementStyle>
    <Style TargetType="{x:Type ComboBox}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate>
                    <TextBlock Text="{Binding SelectedCategoryDisplayName, Mode=OneWay}"/>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</DataGridComboBoxColumn.ElementStyle>


谢谢您的回答。但是,代码段不起作用。实际上,
SelectedCategoryDisplayName
属于
T
。我可以在调用的调试器中看到它。但是UI仍然没有显示任何内容来代替文本块的位置。
会弄乱它吗?再一次-我的救世主;)奇怪的副作用-组合框现在不想进入编辑模式。。。这一定是因为我们已经完全覆盖了它的视图模式,现在“不知道”如何进入编辑模式。然后用DataGridTemplateColumn替换组合框。同样的功能-更加灵活。它要么是这样,要么只是显示SelectedValueBinding属性指定的属性。
<DataGridComboBoxColumn.ElementStyle>
    <Style TargetType="{x:Type ComboBox}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate>
                    <TextBlock Text="{Binding SelectedCategoryDisplayName, Mode=OneWay}"/>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</DataGridComboBoxColumn.ElementStyle>