样式中的元素的WPF Set属性(Visual.Brush)

时间:2017-04-28 13:51:03

标签: c# wpf

如何设置Label(Content)的L_Watermark属性? 我尝试了不同的方法但没有任何作用 通常要设置一个关于他的名字的元素的属性,但在这里它不起作用。 我希望在CodeBehind中执行此操作,或者使用Databinding执行依赖项属性

我的UserControl的XAML:

<StackPanel Orientation="Horizontal" Width="155">
    <TextBox x:Name="TB_Date" LostFocus="TB_Date_LostFocus" KeyDown="TB_Date_KeyDown" BorderThickness="0" VerticalContentAlignment="Center" Width="125" Height="24">
        <TextBox.Style>
            <Style TargetType="TextBox" xmlns:sys="clr-namespace:System;assembly=mscorlib">
                <Style.Resources>
                    <VisualBrush x:Name="VisuBrush" x:Key="CueBannerBrush" AlignmentX="Left" AlignmentY="Center" Stretch="None">
                        <VisualBrush.Visual>
                            <Label x:Name="L_Watermark" Content="{Binding Watermark, UpdateSourceTrigger=PropertyChanged, Mode=OneWay, FallbackValue=Date}" Foreground="LightGray" />
                        </VisualBrush.Visual>
                    </VisualBrush>
                </Style.Resources>
                <Style.Triggers>
                    <Trigger Property="Text" Value="{x:Static sys:String.Empty}">
                        <Setter Property="Background" Value="{StaticResource CueBannerBrush}" />
                    </Trigger>
                    <Trigger Property="Text" Value="{x:Null}">
                        <Setter Property="Background" Value="{StaticResource CueBannerBrush}" />
                    </Trigger>
                    <Trigger Property="IsKeyboardFocused" Value="True">
                        <Setter Property="Background" Value="White" />
                    </Trigger>
                </Style.Triggers>
            </Style>
        </TextBox.Style>
    </TextBox>
    <DatePicker Name="DP_Date" Focusable="False" BorderBrush="{x:Null}" SelectedDateChanged="DP_Date_SelectedDateChanged" Width="30" FirstDayOfWeek="Monday" Height="24"/>
</StackPanel>

以下是我想要设置Content标签的L_Watermark属性的事件处理程序

 private void Initialize(object sender, EventArgs e)
    {
        if (HasStartTime)
        {
            TB_Date.Text = DateTime.Now.ToLongDateString(); 
        }
        Debug.WriteLine(Watermark);
    }

Text中的TB_Date一样,我尝试使用L_Watermark.Content = Watermark

我也尝试过Databinding,如:

<Label x:Name="L_Watermark" Content="{Binding Watermark, UpdateSourceTrigger=PropertyChanged, Mode=OneWay, FallbackValue=Date}" Foreground="LightGray" />

我的UserControl中还有两个依赖项属性:

public bool HasStartTime
{
    get { return (bool)GetValue(HasStartTimeProperty); }
    set
    {
        SetValue(HasStartTimeProperty, value);
        OnPropertyChanged();
    }
}

// Using a DependencyProperty as the backing store for HasStartTime.  This enables animation, styling, binding, etc...
public static readonly DependencyProperty HasStartTimeProperty =
    DependencyProperty.Register("HasStartTime", typeof(bool), typeof(AdvancedDatePicker), new PropertyMetadata(false));

public string Watermark
{
    get { return (string)GetValue(WatermarkProperty); }
    set
    {
        SetValue(WatermarkProperty, value);
        OnPropertyChanged();
    }
}

// Using a DependencyProperty as the backing store for Watermark.  This enables animation, styling, binding, etc...
public static readonly DependencyProperty WatermarkProperty =
    DependencyProperty.Register("Watermark", typeof(string), typeof(AdvancedDatePicker), new PropertyMetadata("Datum"));

0 个答案:

没有答案