2011-11-03 38 views
1

我有幾個項目,例如,我希望始終以相同的方式表現文本框。爲了像背景一樣改變長度,這很好,但我也想添加基本事件處理程序(在這種情況下,獲得焦點事件)。將代碼添加到WPF中的樣式

這是可能的,如果是的話如何?

謝謝。

編輯:這裏有一個例子:

<Style x:Key="BaseComboBox" TargetType="ComboBox"> 
    <Setter Property="FontSize" Value="12"></Setter> 
    <Setter Property="Foreground" Value="Black"></Setter> 
    <Setter Property="FontFamily" Value="Arial"/> 
    <Setter Property="HorizontalAlignment" Value="Stretch"/> 
    <Setter Property="VerticalAlignment" Value="Center"/> 
    <Setter Property="Height" Value="22"/> 
    <Setter Property="Margin" Value="5,0,5,0"/>  
    <Setter Property="IsEditable" Value="True" /> 
    <Add LostFocus Event that will validate the selection here...> 
</Style> 

我所有的風格都在資源字典

+0

取決於你想要的了焦點事件該怎麼辦。如果你想改變文本框的外觀,那麼你可以使用樣式和觸發器來實現。如果你想做其他事情,那麼這取決於「別的東西」是什麼。 –

+0

我真的是指代碼,如電子郵件驗證和其他的東西。這將在我失去焦點的事件中發生,雖然 –

+0

WPF和Silverlight一樣。你必須繼承子類 - http://stackoverflow.com/questions/7960708/style-controls-in-silverlight-global/7960740#7960740 – ChrisF

回答

2
<Style x:Key="MyStyle"> 
    <EventSetter Event="Control.GotFocus" Handler="Control_GotFocus"></EventSetter> 
</Style> 
+0

它給了我一個關於x:Class沒有被定義的錯誤。 –

+0

把它放在你的代碼後面。 –

+0

我通常使用ressources文件來放置我的樣式,我不認爲他們有文件後面的代碼 –

0

爲什麼不用進行驗證常用的方法在您的項目,而不是創造一些奇怪的?

嘗試讀取這個WPF Data Binding and Validation Rules Best Practices

+0

因爲我使用驗證的地方可能不是一個好詞我猜。我的意思不是數據驗證方面的驗證,而是驗證是否選擇了是否有值,或者選擇的值是否與另一個組合等相同...... –