2012-03-09 23 views
0

我已經在用戶控件曝光對象的內部屬性在WPF

<UserControl 
      x:Class="MyUserControl" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      mc:Ignorable="d"> 
    <Grid> 
     <Label Content="Label" 
       Name="myLabel" /> 
    </Grid> 
</UserControl> 

以下我需要:
1)暴露的myLabelFontFamily屬性,因爲它是的MyUserControl財產。
2)*(真的可選)定義myLabel內容爲「MyUserControl1」,「MyUserControl2」等,就像設計者在添加多個控件時所做的那樣。

我應該怎樣暴露那麼該屬性,就像一個序屬性(?)或依賴一個(?)...

回答

0

揭露他們的依賴屬性,實際上是在控制每個屬性應該暴露爲依賴項屬性。然後你可以使用綁定例如的財產附加到Label.FontFamily屬性:

public void MyUserControl() 
{ 
    myLabel.SetBinding(Label.FontFamilyProperty, new Binding { 
                  Path = "FontFamily", 
                  Source = this, 
                 }); 
} 

這裏FontFamilyPath二傳手是你的屬性的名稱。

問:沒有真的有你的第二個問題。你可以重述它還是提供一些樣本?

+0

第二個問題。假設你在設計器中添加了一個標籤。名稱和文本是「Label1」...現在,你把另一個,名稱和文本將是「Label2」等。我需要我的標籤的文本行爲在相同的邏輯。 – serhio 2012-03-09 16:57:01

+0

shit ...已在UserControl中聲明的FontFamily – serhio 2012-03-09 17:22:36

0

FontFamily在Control上聲明,它是UserControl和Label的基礎,並且是繼承的DependencyProperty。因此,除非您覆蓋Label上的FontFamily值(本地值,樣式,觸發器等),否則您可以在UserControl上設置FontFamily並將其顯示在Label上,而無需執行其他任何操作。如果您需要在內部對其進行修改並將其推出以顯示在UserControl上,則需要使用Mode = TwoWay將UserControl的FontFamily綁定到Label。

第二部分 - 您需要設置一些計數機制,該計數機制在創建實例時增加,可能作爲控件內部的靜態字段。然後,您可以遞增該值並將其應用於UserControl構造函數中的Label(這將取決於每個會話期間在運行時加載順序和變量)。

相關問題