2011-09-15 46 views
-2
<TextBlock.Visibility> 
    <mat:MatcherConverter> 
     <mat:Matcher MatchVisibility="Visible" DismatchVisibility="Collapsed"> 
      <mat:Matcher Value1="{Binding Boolean1}" Value2="True" ComparisonOperator="AND"/> 
      <mat:Matcher Value1="{Binding Boolean2}" Value2="True" ComparisonOperator="AND"/> 
     </mat:Matcher> 
    </mat:MatcherConverter> 
</TextBlock.Visibility> 

您如何看待一個類,它具有作爲基類的MarkupExtension? 在這種情況下,它將是MatcherConverter。這個類將遞歸遍歷所有匹配器,結果是一個布爾值。設置自定義類的控件的可見性

+0

你能改說你的目標是什麼嗎?你說的話對我來說毫無意義。 –

+0

這非常含糊。究竟是什麼問題?你嘗試過什麼,它是如何不符合你的期望的? –

+0

我不知道如何將轉換爲Visibility。是一個合理的方式來與此MarkupExtension,然後我可以在ProvideValue方法轉換它。 – kusi581

回答

0

你可以做一個財產TheBooleanResultMatcher比返回布爾結果要評估(對ChildrenValue1Value2,...)。然後製作一個IValueConverter,需要Matcher並獲得TheBooleanResult並返回您想要的可見性。

public class MatcherConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     Matcher m = (Matcher)value; 
     return m.TheBooleanResult ? Visibility.Visible : Visibility.Hidden; 
    } 
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 
+0

@ kusi581我看見了你對這個問題的評論。您可以將'Matcher'放置在usercontrols資源中(可能是'ObjectDataProvider')。然後將文本框的可見性屬性綁定到該資源。 [ObjectDataProvider示例](http://bea.stollnitz.com/blog/?p=22) – erikH

+0

可以說我希望基於2種不同條件的可見性(例如:用戶權限,全局權限)。現在我添加一個匹配器作爲兒童的其他2個匹配器的可見性。根匹配器的ComparisionOperator是AND,當兩個兒童匹配器都是真的時,它的可見的,否則就會崩潰。孩子的價值1綁定到模型上的一個Property。所以匹配器的組合總是不同的 – kusi581

+0

你可以把它放在文本框的資源中,但你似乎在尋找其他的東西.. – erikH

相關問題