2011-10-06 61 views
0

我有我的用戶聲明一個控件屬性爲靜態資源

private StaticInfoCollection _StaticInfoColl; 
public StaticInfoCollection StaticInfoColl 
{ 
    get { return _StaticInfoColl; } 
    set 
    { 
     if (value == _StaticInfoColl) return; 
     _StaticInfoColl = value; 
    } 
} 

我想能夠在XAML使用這種內的屬性定義。 但是每當我做財產申報如下

<UserControl.Resources> 
    <local:Static.StaticInfoColl x:Key="SIColl" /> 
</UserControl.Resources> 

Static.StaticInfoColl不XML命名空間中存在的標籤clr-namespace:AAA.Presentation

有人能幫助我什麼,我做錯了什麼?


的用戶控件的名稱是靜態[X:姓名]

<UserControl x:Class="AAA.Presentation.ucBrand" 
     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" 
     xmlns:local ="clr-namespace:MBCL.Presentation" 
     mc:Ignorable="d" 
     d:DesignHeight="710" 
     d:DesignWidth="1025" 
     Height="710" 
     Width="1025" 
     x:Name="Static" 
     HorizontalAlignment="Left" 
     HorizontalContentAlignment="Left"> 

我有對他們的多個按鈕的用戶控件。 按鈕具有一個StackPanel內,如下所示:

<Button Style="{StaticResource appViewButton}" DataContext="{Binding}" > 
    <StackPanel> 
     <TextBlock FontSize="11">View Products</TextBlock> 
     <TextBlock Text="{Binding Path=FileDownloadDate,StringFormat='Last Uploaded : {0:dd-MMM-yyyy}'}" 
       Style="{StaticResource tbUploadDate}" 
       HorizontalAlignment="Center" /> 
    </StackPanel> 
</Button> 

我有一個實體InfoInfoCollection
該按鈕綁定到InfoCollection,基於FileType我想選擇適當的FileDownloadDate並顯示它。

public class Info 
{ 

    public Info(DataRow dr) 
    { 
     _FileType   = Util.HandleNull<string>(dr[AppConstants.FILE_TYPE]); 
     _FileID   = Util.HandleNull<long?>(dr[AppConstants.FILEID]); 
     _FileTypeDesc  = Util.HandleNull<string>(dr[AppConstants.CODE_DESC]); 
     _FileDownloadDate = Util.HandleNull<DateTime>(dr[AppConstants.DOWNLOAD_DATE]); 
    } 

    private string _FileType; 
    public string FileType 
    { 
     get { return _FileType; } 
     set 
     { 
      if (value != _FileType) 
       _FileType = value; 
     } 
    } 

    private string _FileTypeDesc; 
    public string FileTypeDesc 
    { 
     get { return _FileTypeDesc; } 
     set 
     { 
      if (value != _FileTypeDesc) 
       _FileTypeDesc = value; 
     } 
    } 

    private long? _FileID; 
    public long? FileID 
    { 
     get { return _FileID; } 
     set 
     { 
      if (value != _FileID) 
       _FileID = value; 
     } 
    } 

    private DateTime _FileDownloadDate; 
    public DateTime FileDownloadDate 
    { 
     get { return _FileDownloadDate; } 
     set 
     { 
      if (value != _FileDownloadDate) 
       _FileDownloadDate = value; 
     } 
    } 

} 

public class InfoCollection : ObservableCollection<Info> 
{ 
    public InfoCollection(DataTable dtStaticInfo) 
    { 
     foreach (DataRow drSInfo in dtStaticInfo.Rows) 
     { 
      this.Add(new StaticInfo(drSInfo)); 
     } 

    } 
} 
+1

發表您的整個'Static'類。 –

+1

這沒有多大意義。你不能創建一個屬性的實例,你可以創建一個具有這個(和更多)屬性的對象實例。 「UserControl.Resources」部分用於控件中使用的其他類或對象,如畫筆,動畫,樣式,模板等。還有什麼是「靜態」。在你的xaml中?一個命名空間?這就是別名「local:」的意思。請提供更多詳細信息,你想要做什麼。 – dowhilefor

回答

3

如果我理解正確:

  • 你有一個用戶控件(ucBrand)。
  • 您有一個類StaticInfoCollection
  • 您希望在ucBrand中的多個位置使用StaticInfoCollection的單個實例,並且您也可以在代碼中訪問StaticInfoCollection對象。

如果是這樣的話......你靠近......但我會做,而不是執行以下操作:

定義在XAML來StaticInfoCollection對象的實例。

<UserControl.Resources> 
    <local:StaticInfoCollection x:Key="SIColl" /> 
</UserControl.Resources> 

然後,當你要訪問您的StaticInfoCollection對象在你的用戶控件的代碼:

StaticInfoCollection staticInfoColl = (StaticInfoCollection)this.FindResource("SIColl"); 
+0

嗨斯科特,感謝您的快速響應 - 本地被定義爲xmlns:local =「clr-namespace:AAA.Presentation」,但StaticInfoCollection是ucBrand [AAA.Presentation.ucBrand]下的屬性,我如何創建一個資源指向該屬性。 – Raj

+0

'StaticInfoCollection'似乎是一種類型。 'StaticInfoColl'是你的那種類型的屬性。我的建議是刪除該屬性,而是創建一個StaticInfoCollection(類型)的實例作爲資源。然後在代碼中...而不是訪問你的屬性'StaticInfoColl',你可以使用'this來訪問它。FindResource(...)」。這完全取決於你想要在XAML中使用這個類的實例。 – Scott

+0

你能解釋一下你希望用XAML中的屬性來做什麼嗎? (例如,將文本的值顯示爲文本我認爲你想做的事情越多......我認爲你應該簡單地綁定到你的財產......而不是實際上將其創建爲資源。 – Scott