<Window x:Class="ColumnSpan_Check.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Rectangle Fill="Red" Grid.Column="0" Grid.ColumnSpan="1">
<Rectangle.Style>
<Style>
<Setter Property="Grid.ColumnSpan" Value="2"/>
</Style>
</Rectangle.Style>
</Rectangle>
</Grid>
</Window>
为什么我不能让矩形在这里占据两列?我希望矩形在满足某个条件时占用两列(使用数据触发器),问题是数据触发器被触发但矩形的布局不会更新以占据两列。
答案 0 :(得分:1)
这可能只是输入错误,但此属性不起作用:
public Visibility GridColVisibility
{
get { return GridColVisibility; }
set { GridColVisibility= value; RaisePropertyChanged(() => GridColVisibility); }
}
你不能在属性中使用属性名称 属性......你会收到错误。您需要private
成员来支持您的财产......类似这样的内容:
private Visibility gridColVisibility;
public Visibility GridColVisibility
{
get { return gridColVisibility; }
set { gridColVisibility = value; RaisePropertyChanged(() => GridColVisibility); }
}
但是......我会假设这只是一个输入错误。
看着你的DataTrigger
,我真的看不到任何明显错误的东西,所以我只能假设你的Binding Path
不正确......如果是,那么看看输出Visual Studio中的窗口,您应该找到错误的详细信息。这个小例子表明 肯定可以在Grid.ColumnSpan
中设置DataTrigger
属性:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Rectangle Fill="LightGreen">
<Rectangle.Style>
<Style>
<Style.Triggers>
<Trigger Property="UIElement.IsMouseOver" Value="True">
<Setter Property="Grid.ColumnSpan" Value="2" />
</Trigger>
</Style.Triggers>
</Style>
</Rectangle.Style>
</Rectangle>
</Grid>
所以我认为不幸的是,鉴于您提供的信息,您是唯一能够真正找到您错误的人......我会好好看看{{1如果我是你。
答案 1 :(得分:1)
您的问题就在XAML中:
您可以在两个地方设置Grid.ColumnSpan
附加属性,直接在Rectangle
标记中再次设置样式。第一个设置优先于第二个设置。
由于您希望Rectangle在满足条件时占据两列,只需从Grid.ColumnSpan
标记中删除Rectangle
并将其放入Style&amp;你很高兴去。像这样:
<Rectangle Fill="Red" Grid.Column="0">
<Rectangle.Style>
<Setter Property="Grid.ColumnSpan" Value="1"/>
<Style>
<Setter Property="Grid.ColumnSpan" Value="2"/>
</Style>
</Rectangle.Style>
/Rectangle>
答案 2 :(得分:0)
我能够通过从按钮中删除Grid.ColumnSpan属性来解决此问题。 谢谢大家的帮助。