我試圖確定附加行爲是我們需要在樓宇控制爲我們的應用程序中的表單。我創建了一個附加屬性,現在我該如何使用它?
因此,我不僅要知道如何創建附加行爲,但要看到他們是使用解決問題的實際情況。我用this MSDN article來創建一個帶有附加屬性的UserControl,這種方式我認爲很有用,也就是說,某個子元素是突出顯示的或未突出顯示的堆疊面板。
這個例子運行良好,但我在哪裏把邏輯亮點或不突出(例如,改變背景顏色)子元素?
XAML:
<Window x:Class="TestAttachedProperties2343.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:TestAttachedProperties2343"
Title="Window1" Height="300" Width="300">
<Grid>
<local:ExtendedStackPanel>
<TextBlock local:ExtendedStackPanel.IsHighlighted="True" Text="text1"/>
<TextBox local:ExtendedStackPanel.IsHighlighted="False" Text="text2"/>
<TextBox local:ExtendedStackPanel.IsHighlighted="True" Text="text3"/>
</local:ExtendedStackPanel>
</Grid>
</Window>
代碼背後:
using System.Windows;
using System.Windows.Controls;
using System.ComponentModel;
using System;
namespace TestAttachedProperties2343
{
public partial class ExtendedStackPanel : StackPanel
{
public static readonly DependencyProperty IsHighlightedProperty = DependencyProperty.RegisterAttached(
"IsHighlighted",
typeof(Boolean),
typeof(ExtendedStackPanel),
new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
public static void SetIsHighlighted(UIElement element, Boolean value)
{
element.SetValue(IsHighlightedProperty, value);
}
public static Boolean GetIsHighlighted(UIElement element)
{
return (Boolean)element.GetValue(IsHighlightedProperty);
}
public ExtendedStackPanel()
{
InitializeComponent();
}
}
}
我需要引用什麼來使用「行爲」類,我只找到System.ComponentModel.CategoryAttribute.Behavior(http://msdn.microsoft.com/en-us/library/system。 System.dll中的componentmodel.categoryattribute.behavior.aspx),我已經引用它說類型「行爲」找不到。 – 2009-10-07 13:36:43
您需要引用System.Windows.Interactivity程序集。它作爲Expression Blend 3的一部分安裝。 – Konamiman 2009-10-07 13:46:28
這在WPF中運行良好,我從技術上理解它是如何工作的。我想我們可以如何在我們的表單中使用它,也許可以代替定義ItemType(客戶或員工)的消息,因此具有不同的驗證,消息等。您如何在現實世界的應用程序中使用它? – 2009-10-07 14:10:35