2011-06-23 1 views

答えて

5

が見える、またはすることができます...両方が動作しませんでした

<zoom:ZoomControl Mode="Original"> 

<zoom:ZoomControl Zoom="1"> 

の両方を試してみましたZoomControlのLoadedイベントハンドラで明示的にZoomToOriginalを呼び出します。

EqualityToBooleanConverterが例外をスローするように見えることもあります。

public class EqualityToBooleanConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     return object.Equals(value, parameter); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     if ((bool)value) 
      return parameter; 

     //it's false, so don't bind it back 
     throw new Exception("EqualityToBooleanConverter: It's false, I won't bind back."); 
    } 
} 

あなたは代わりに、その例外を削除し、Binding.DoNothingを返却する必要があります:コードは次のようになります。コンバータはZoomControlのコントロールテンプレートで使用されている

は、そのよう:だから、効果的

<RadioButton Content="1:1" 
    GroupName="rbgZoomMode" 
    IsChecked="{Binding RelativeSource={RelativeSource TemplatedParent},Path=Mode,Converter={StaticResource equalityConverter},ConverterParameter={x:Static Controls:ZoomControlModes.Original}}" /> 
<RadioButton Content="Fill" 
    GroupName="rbgZoomMode" 
    IsChecked="{Binding RelativeSource={RelativeSource TemplatedParent},Path=Mode,Converter={StaticResource equalityConverter},ConverterParameter={x:Static Controls:ZoomControlModes.Fill}}" /> 

、値がtrueの場合にのみソースにバインドしようとしています。しかし、あなたが見たように例外がスローされます。

+0

これを試してみてください。 ZoomControlの内容が変化しているので、おそらく動作していないでしょうか? –

+0

@Brian - OnApplyTemplateのZoomToFillを呼び出すように見えるので、LoadedイベントハンドラでZoomToOriginalを呼び出す必要があります。 – CodeNaked

+0

私はZoomControlのLoadedイベントのイベントハンドラを追加し、ハンドラにZoomToOriginalを呼び出しました。しかし、メッセージ "EqualityToBooleanConverter:例外はスローされます。これは間違いですが、私は元に戻りません。"それが何であるか、どんな考えですか? –

関連する問題