第一個問題在這裏。無論如何,這裏是:基於SelectedDate更改DatePicker樣式
我有一個帶有很多DatePicker控件(CodePlex上的WPFToolkit的DatePicker)的XAML Windows。每個DatePicker的默認值爲1/1/1990,如果沒有選擇其他日期,我想(或者更確切地說我的老闆:-))以灰色斜體而不是黑色顯示文本。因此,可以很容易地看到日期尚未輸入的字段。
這可能很簡單,但對於WPF/XAML來說我很新。事實上,這是我第一次使用它。
因此,這裏是我和實際上的偉大作品:
<Style TargetType="{x:Type my:DatePicker}">
<Style.Triggers>
<Trigger Property="Text" Value="1/1/1990">
<Setter Property="Foreground" Value="DarkGray"/>
<Setter Property="ToolTip" Value="Please select a date"/>
<Setter Property="FontStyle" Value="Italic"/>
</Trigger>
</Style.Triggers>
</Style>
問題是,它並沒有因爲定位/區域設置問題,每臺機器上工作,效果顯着。在觸發的「值」屬性
<Style TargetType="{x:Type my:DatePicker}">
<Style.Triggers>
<Trigger Property="Text" Value="{Binding Source={x:Static p:Settings.Default}, Path=MinDate, Mode=TwoWay}">
<Setter Property="Foreground" Value="DarkGray"/>
<Setter Property="ToolTip" Value="Veuillez choisir une date"/>
<Setter Property="FontStyle" Value="Italic"/>
</Trigger>
</Style.Triggers>
</Style>
發現其中的差別:
所以,我想這一點。這產生以下錯誤:
A 'Binding' cannot be set on the 'Value' property of type 'Trigger'. A 'Binding' can only be set on a DependencyProperty of a DependencyObject.
我明白我的意思,我明白爲什麼這不起作用。 (請注意,MinDate的類型DateTime的值爲1/1/1990)
那麼,我怎樣才能在所有計算機上實現我的第一個代碼片段的結果?
謝謝你的時間。
感謝您的聯繫。但是,我實際上並不想更改Calendar控件的樣式。只是在DatePickerTextBox中顯示的文本。我使用觸發器,因爲我想根據它的值更改文本框的樣式。我昨天可能不清楚這件事。 如果DatePickerTextBox的Text屬性是01/01/1990,我希望前景是DarkGray Italic,否則請改回Normal Normal,因此有一個視覺反饋哪些字段具有默認值。這就是我認爲使用觸發器的原因可能是正確的。 – 2010-01-26 08:12:18
好吧,你可能需要一個觸發器,我只是不認爲使用這個日期是最好的事情來建立它的基礎。我可能綁定到一個布爾屬性,所以你不必擔心本地化。 – nportelli 2010-01-26 14:09:29
謝謝,這幫助我走上正軌。我現在創建了一個轉換器,如果SelectedDate屬性等於我的默認Date值,則返回true,從而觸發樣式更改。奇蹟般有效。再次感謝。 – 2010-01-27 12:31:10