C# DataTemplate中的WPF网格列宽无效
我有C# DataTemplate中的WPF网格列宽无效,c#,xaml,mvvm,catel,C#,Xaml,Mvvm,Catel,我有数据窗口和用户控件(不同的视图模型) MyDataWindow.Xaml: <catel:DataWindow.Resources> <DataTemplate DataType="{x:Type viewmodels:MessageViewModel}"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="20*"/>
数据窗口
和用户控件
(不同的视图模型
)
MyDataWindow.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}">
消息
:ObservableCollection()代码>
UserControl
中的我的内容在运行时动态添加到DataWindow
。如果UserControl
中的内容宽度大于WindowWidth ColumnWidth(column1 20*和column2 80*),则不起作用。我只看到网格。列(80*),它的宽度是100*。我做错了什么?
谢谢你的帮助 当元素的大小大于windows大小时,不可能渲染80%的窗口。
要解决此问题,您可以通过删除代码中的“窗口宽度”属性来动态调整窗口大小。您确定您的视图:MessageView
了解父网格
-?感谢帮助!问题是“当一个元素的大小大于窗口大小时,它不可能渲染80%的窗口”,谢谢!添加视图后是否可以重新渲染窗口?如果我重新渲染窗口-它是20和80?是的,当您使用WPF绑定时,如果您的ViewModel实现INotifyPropertyChanged并且您的列表必须是ObservableCollection,请再次更改ViewModel重新渲染器本身。
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Border Grid.Row="0" Background="Red">
</Border>
<Border Grid.Row="1">
...
Content
...
</Border>
</Grid>