如何将日历显示模式用作DataTrigger值

时间:2012-08-28 02:05:51

标签: wpf data-binding enums datatrigger

所以我需要知道如何设置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事件,但由于我一整天都在网上搜索这个解决方案,我真的很想知道如何以这种方式解决这个问题。

任何输入都将受到高度赞赏。谢谢!

1 个答案:

答案 0 :(得分:0)

实际上我并不完全明白你需要什么。但我会尽力帮忙。

我们看到的定义:

enter image description here

然后能够使用我们必须做的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>

我建议您阅读有关触发器,数据触发器和绑定的更多信息。