所以我需要知道如何设置xmlns让我在Trigger的值中使用CalendarMode。
我尝试过使用xmlns:cal =“clr-namespace:System.Windows.Controls”,xmlns:cal =“clr-namespace:System.Windows.Controls.Calendar”我每次都构建了项目,但我收到错误告诉我CLR命名空间未定义且无法找到。
这是我用它的地方
<DataTrigger Binding="{Binding Source=_Calendar, Path=Calendar.DisplayMode}">
<DataTrigger.Value>
<cal:CalendarMode>Month</cal:CalendarMode>
</DataTrigger.Value>
<Setter Property="Grid.Opacity" Value="1" />
</DataTrigger>
我想我可以只听日历上的DisplayModeChanged事件,但由于我一整天都在网上搜索这个解决方案,我真的很想知道如何以这种方式解决这个问题。
任何输入都将受到高度赞赏。谢谢!
答案 0 :(得分:0)
我们看到的定义:
然后能够使用我们必须做的xaml:
的xmlns:呈现=&#34; CLR-命名空间:System.Windows.Controls;装配= PresentationFramework&#34;
现在,如果你想让自己控件的依赖属性发生某些事情,你应该使用Triggers而不是DataTriggers
样品:
<Calendar Height="170" HorizontalAlignment="Left" Margin="83,112,0,0" Name="calendar1" VerticalAlignment="Top" Width="180">
<Calendar.Style>
<Style TargetType="Calendar">
<Setter Property="Opacity" Value="0.4"/>
<Style.Triggers>
<Trigger Property="SelectionMode" Value="{x:Static presentation:CalendarMode.Month}">
<Setter Property="Opacity" Value="1.0"/>
</Trigger>
</Style.Triggers>
</Style>
</Calendar.Style>
</Calendar>
通常,DataTriggers用于您创建的对象,实现INotifyPropertyChanged。别乱。
现在,如果你想更改另一个控件(当CalendarMode更改时),你应该这样做:
<Calendar Height="170" HorizontalAlignment="Left" Margin="83,112,0,0"
Name="calendar1" VerticalAlignment="Top" Width="180"/>
<Grid>
<Grid.Style>
<Style TargetType="Grid">
<Setter Property="Opacity" Value="0.5"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=calendar1, Path=CalendarMode}">
<DataTrigger.Value>
<presentation:CalendarMode>Month</presentation:CalendarMode>
</DataTrigger.Value>
<Setter Property="Opacity" Value="1.0"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
</Grid>
我建议您阅读有关触发器,数据触发器和绑定的更多信息。