这是DataTemplate。
<DataTemplate x:Key="Node2Titles3Flds">
<Border BorderBrush="Aqua" BorderThickness="0" Padding="1" Margin="1">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0"/>
<ColumnDefinition Width="{Binding myColumnWidth}"/>
<ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding id}" />
<TextBlock Grid.Column="1" Text="{Binding Name}" Margin="4,0,5,0" TextAlignment="Left"/>
<TextBlock Grid.Column="2" Text="{Binding Value}" TextAlignment="Left"/>
</Grid>
</Border>
</DataTemplate>
这是财产:
public string myColumnWidth { get; set; } //using Fody
代码编译并运行。 DataTemplate位于属性可见的ResourceDictionary中。
发生了一些奇怪的事情:
名为ResDict.xaml的ResourceDictionary位于根文件夹中,这是链接
<Window.Resources>
<ResourceDictionary Source="ResDict.xaml">
</ResourceDictionary>
</Window.Resources>
我很难过。有什么想法吗?
答案 0 :(得分:0)
首先使你的属性变为double,并在DataContext(viewModel)中为它设置一些值
示例:
public class MainViewModel
{
public MainViewModel()
{
Width = 200;
}
public double Width { get; set; }
和xaml:
<Window.DataContext>
<local:MainViewModel />
</Window.DataContext>
<Grid ShowGridLines="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition Width="100" />
<ColumnDefinition Width="{Binding Width}" />
<ColumnDefinition Width="100" />
<ColumnDefinition Width="100" />
</Grid.ColumnDefinitions>
</Grid>
那就好了。如果要在运行时调整,则ViewModel需要实现INotifyPropertyChanged,属性需要调用OnPropertyChanged。
答案 1 :(得分:0)
修正了问题。退回并重新编写一些不正确的项目。我会解释但是......太乱了。