2013-09-22 72 views
0

我得到了下面的代碼:參考當前類的XAML的Windows Phone

namespace SomeApp 
{ 
    public partial class MyClass : PhoneApplicationPage, IValueConverter 
    { 

    SOME METHODS... 

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 

     return true; 

    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 

     return true; 

    } 

    } 
} 


我想這一類綁定到一個單選按鈕的ValueConverter。有什麼方法可以參考我正在使用的當前課程?例如:

<phone:PhoneApplicationPage
x:Class="SomeApp.MyClass"
xmlns:local="clr-namespace:SomeApp">

<phone:PhoneApplicationPage.Resources>
<local:MyClass x:Key="myClass"/>
</phone:PhoneApplicationPage.Resources>

<RadioButton IsChecked="{Binding Converter={StaticResource myClass}}"/>

在此先感謝=)

+0

public class MyClass:IValueConverter – MatDev8

回答

0

首先似乎使用您的網頁轉換器並不像一個良好的想法,這是更好的做法來分離轉換器功能在一個單獨的班級中。特別是創建一個以這種方式創建的轉換器的StaticResources是一個非常糟糕的主意,因爲它會使用大量無關的內存來創建整個頁面。

轉換器可以在xaml中綁定的唯一一個是StaticResource,因此您不能在xaml中執行此操作,但是如果您確實想要這樣做,則可以通過創建代碼背後的綁定來完成此操作(例如在頁面的構造函數中):

Binding binding=new Binding(); 
binding.Converter = this; 
myRadioButton.SetBinding(CheckBox.IsCheckedProperty, binding); 
+0

感謝您的回答和建議。 =)以及如果我只想引用XAML中的當前類呢?不通過靜態資源... –

+1

如果不是轉換器(僅支持StaticResource),可以使用ElementName引用當前類:在您的xaml的根目錄上設置一個名稱,並使用以下綁定在要引用的位置當前頁面:{Binding ElementName = myClass}(其中我的類是您分配給根的名稱 –