0

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

任何输入将不胜感激。谢谢!

4

1 回答 1

0

实际上我不明白你需要什么。但我会尽力提供帮助。

我们看到的定义:

在此处输入图像描述

然后能够使用我们必须做的xaml:

xmlns:presentation="clr-命名空间:System.Windows.Controls;assembly=PresentationFramework"

现在,如果您希望自己控件的依赖属性发生某些事情,您应该使用 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>

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

于 2012-08-28T03:22:07.637 回答