Dot-Net

如何將特定值傳遞給轉換器參數?

  • April 18, 2011

我創建了一個類 Person,如下所示:

public class Person
{
   public enum GenderType
   {
       Female, 
       Male
   }

   public string Name
   {
       get; set;
   }

   public GenderType? Gender
   {
       get; set;
   }
}

接下來,我創建了將呈現 Person 類型對象的數據模板。

這是 XAML 程式碼:

<DataTemplate 
   x:Key="personTemplate" 
   DataType="{x:Type model:Person}">
 <StackPanel>
   <RadioButton 
       Content="Female" 
       IsChecked="{Binding Path=Gender, 
                   Converter={StaticResource genderConverter}, 
                   ConverterParameter=???}"/>
   <RadioButton 
       Content="Male" 
       IsChecked="{Binding Path=Gender, 
                   Converter={StaticResource genderConverter}, 
                   ConverterParameter=???}"/>
   <RadioButton 
       Content="Not specified" 
       IsChecked="{Binding Path=Gender, 
                   Converter={StaticResource genderConverter}, 
                   ConverterParameter=???}"/>
 </StackPanel>
</DataTemplate>

當然???,程式碼中的 s 不起作用 :) 問題是我想創建一個genderConverter轉換器,它將比較給定的值,即與參數中提供personObject.Gender的給定值進行比較,如果值匹配則返回。Person.GenderType``true

我不知道如何使轉換器參數分別為第一個、第二個和第三個單選按鈕傳遞Person.GenderType.Female,Person.GenderType.Male和。null

嘗試使用x:Static標記擴展:

<RadioButton 
       Content="Female" 
       IsChecked="{Binding Path=Gender, 
                   Converter={StaticResource genderConverter}, 
                   ConverterParameter={x:Static model:GenderType.Female}}"/>

或者,您可以只傳遞一個字元串並用於Enum.Parse將該字元串轉換為轉換器中的枚舉類型:

<RadioButton 
       Content="Female" 
       IsChecked="{Binding Path=Gender, 
                   Converter={StaticResource genderConverter}, 
                   ConverterParameter=Female}"/>
GenderType gender = (GenderType)Enum.Parse(typeof(GenderType), parameter.ToString());

引用自:https://stackoverflow.com/questions/5702737