2016-07-07 184 views
-2

此問題與我昨天詢問的this question有關,無法找到答案。我想知道是否可以在XAML之間進行類型轉換。我發現[這個答案] [2],但我無法得到這個語法的工作。我希望能夠向下轉換爲某種類型以訪問其某些屬性。我寧願只使用XAML方法,但如果需要使用C#,我也可以這樣做。任何幫助表示讚賞。謝謝在XAML中鑄造類型

編輯:

添加一些代碼來澄清我的問題。

我的問題是當我嘗試綁定到一個特定於某個子類單元類型的屬性時,XAML沒有看到它,而我只是回到0。通常情況下,如果這是在C#中完成的,我只需將其轉換並訪問該屬性,但在此時我無法在我的代碼中執行此操作。綁定正在C#中創建,如下所示:

dgtc.Header = Properties.Resources.MaxPressure; 
dgtc.MinWidth = 25; 
dgtc.Width = Properties.Settings.Default.MaxPressureColumnWidth; 
dgtc.IsReadOnly = true; 
dgtc.Binding = new Binding("Unit.MaxDepthRelativeToEntry") 
{ 
    Converter = new DistanceUnitsConverter() 
}; 

其中dgtc是DataGridTextColumn。 Unit.MaxDepthRelativeToEntry來自0,因爲它是一個AUnit的子類的屬性,所以XAML認爲我試圖訪問一個不存在的屬性。

從第二個鏈接到目前爲止,我已經嘗試了一些如下語法:

dgtc.Binding = new Binding("AUnit.MaxDepthRelativeToEntry") 
dgtc.Binding = new Binding("Unit(MyNameSpace:AUnit).MaxDepthRelativeToEntry") 
dgtc.Binding = new Binding("Unit(MyNameSpace:AUnit.MaxDepthRelativeToEntry)") 

,卻不能得到任何的那些工作。我也嘗試通過轉換器來做到這一點,但問題是,當我構建DataGrid /設置綁定/等時,我沒有可用的單元列表。所以我無法從該實例中獲取該屬性並將其返回。有誰知道我可以用什麼方法,最好是在XAML中,獲得我綁定到的類型的子類型的屬性?

+0

創建[最小,完整,可驗證]的(http://stackoverflow.com/help/mcve)例如你嘗試過什麼,失敗了。 –

+0

我不這麼認爲你可以在xaml中投射,因爲它只是一個標記,在c#中,只要投射有效(可能通過轉換器或代碼隱藏),投射應該沒有問題。 – adminSoftDK

回答

0

正如Eli所指出的那樣,很難確切地告訴你在沒有一些示例代碼的情況下你想要完成什麼。但是,對於您來說簡單的解決方案可能只是使用綁定與轉換器。這裏有一個轉換器的(未經測試),例如,將嘗試強制轉換爲特定類型:

public class CastAsMyTypeConverter: IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     var myTypeObject = value as MyType; 
     return myTypeObject ?? Binding.DoNothing; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotSupportedException(); 
    } 
}