DataTemplate 中的 WPF 网格列宽不起作用

WPF Grid Column width in DataTemplate does not work

我有DataWindowUserControls(不同ViewModels)。

我的DataWindow.Xaml:

<catel:DataWindow.Resources>
<DataTemplate DataType="{x:Type viewmodels:MessageViewModel}">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="20*"/>
            <ColumnDefinition Width="80*"/>
        </Grid.ColumnDefinitions>
        <Views:MessageView Grid.Column="1"/>
    </Grid>
</DataTemplate>
</catel:DataWindow.Resources>

<ItemsControl ItemsSource="{Binding Messages}">

我的UserControlMessageView.Xaml

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition />
    </Grid.RowDefinitions>

    <Border Grid.Row="0" Background="Red">
    </Border>

    <Border Grid.Row="1">
        ...
        Content
        ...
    </Border>
</Grid>

Messages : ObservableCollection<ViewModelBase>();

我在 UserControl 中的内容在运行时动态添加到 DataWindow。如果 UserControl 中的内容宽度大于 WindowWidth ColumnWidth(column1 20* 和 column2 80*)不起作用。我只看到 Grid.Column(80*),它的宽度是 100*。我究竟做错了什么? 感谢您的帮助!

当元素的大小超过 windows 大小时,不可能渲染 windows 的 80% 的元素。 要解决此问题,您可以通过删除代码中的 Windows 宽度属性来使 windows 大小动态化。