![](/img/trans.png)
[英]Code-behind for DataTemplate defined in a ResourceDictionary
[英]WPF Set DataTemplate Grid size in code behind (ResourceDictionary)
我有包含 Dialog 模板的 ResourceDictionary。 它有自己的DataType="{x:Type viewModels:DialogViewModel}"
。 我想在初始化時設置這個對話框“窗口”的大小。 如果我將例如 Height 屬性添加到DialogViewModel
,我知道該怎么做。 但是,這不是指定高度的正確位置。 如何在后面的代碼中執行它然后綁定到該屬性? 我想我已經嘗試了我能找到的所有可能的解決方案。
基本上我需要在SplitDialog.xaml.cs
中指定高度,假設Height=500
然后將其添加到<Grid Margin="20,20,20,10" Tag="Category dialog" MinHeight="450" Height="???" x:Name="MainGrid">
<Grid Margin="20,20,20,10" Tag="Category dialog" MinHeight="450" Height="???" x:Name="MainGrid">
,但是如何?
我試圖添加到SplitDialog.xaml.cs
(返回高度為空):
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()
{
}
}
在 Grid 的 Loaded 事件中提供此邏輯,例如:
<Grid Loaded="Grid_Loaded">...
然后在代碼隱藏中:
private void Grid_Loaded(object sender, RoutedEventArgs e)
{
Grid grid = sender as Grid;
if (grid != null)
{
grid.Height = 600;
}
}
不?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.