WPF在代码隐藏(ResourceDictionary)中设置DataTemplate网格大小



我有一个包含Dialog模板的ResourceDictionary。它有自己的DataType="{x:Type viewModels:DialogViewModel}"。我想设置这个对话框";窗口";初始化时的大小。如果我将例如Height属性添加到DialogViewModel,我知道如何做到这一点。但是,这不是指定"高度"的正确位置。如何在代码隐藏中执行此操作,然后绑定到该属性?我想我已经尝试了我能找到的所有可能的解决方案。

基本上,我需要在SplitDialog.xaml.cs中指定Height,比如说Height=500,然后将其添加到<Grid Margin="20,20,20,10" Tag="Category dialog" MinHeight="450" Height="???" x:Name="MainGrid">中,但如何?

我已经尝试添加到SplitDialog.xaml.cs(返回Height为null(:

Grid gGrid = (Grid)this.FindName("MainGrid");
gGrid.Height = 600;

SplitDialog.xaml:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="Controls.Styles.Dialog.SplitDialog"
xmlns:viewModels="clr-namespace:ViewModels.Category;assembly=ViewModels">
<DataTemplate DataType="{x:Type viewModels:DialogViewModel}">
<DataTemplate.Resources>
<ResourceDictionary>
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
</ResourceDictionary>
</DataTemplate.Resources>
<Grid Margin="20,20,20,10" Tag="Category dialog" MinHeight="450" x:Name="MainGrid">
</Grid>
</DataTemplate>
</ResourceDictionary>

SplitDialog.xaml.cs:

public partial class SplitDialog : ResourceDictionary
{
public SplitDialog()
{
}
}

在网格的Loaded事件中提供此逻辑,例如:

<Grid Loaded="Grid_Loaded">...

然后在代码后面:

private void Grid_Loaded(object sender, RoutedEventArgs e)
{
Grid grid = sender as Grid;
if (grid != null)
{
grid.Height = 600;
}
}

没有?

最新更新