8

私は従わなければならないProgressIndicator

<MahAppsControls:ProgressIndicator Width="100"
                                   Height="10"
                                   VerticalAlignment="Center"
                                   ProgressColour="White" 
                                   Visibility="{Binding ProgressVisibility}"/>

そして、このViewに関連付けられたViewModelで実装します

private Visibility progressVisibility = Visibility.Collapsed;
public Visibility ProgressVisibility
{
    get { return progressVisibility; }
    set
    {
        if (value == progressVisibility)
            return;
        progressVisibility = value;
        this.OnPropertyChanged("ProgressVisibility");
    }
}

問題は、このバインドが失敗していることです。その理由はわかりません。スヌープを使用すると、次のようになります

System.Windows.Data エラー: 40: BindingExpression パス エラー: 'ProgressVisibility' プロパティが 'object' ''ProgressIndicator' (Name='progressIndicator')' に見つかりません。BindingExpression:Path=ProgressVisibility; DataItem='ProgressIndicator' (Name='progressIndicator');

ターゲット要素は 'ProgressIndicator' (Name='progressIndicator') です。ターゲット プロパティは 'Visibility' (タイプ 'Visibility') です System.Windows.Data エラー: 40 : BindingExpression パス エラー: 'ProgressVisibility' プロパティが 'object' ''ProgressIndicator' (Name='progressIndicator')' に見つかりません。BindingExpression:Path=ProgressVisibility; DataItem='ProgressIndicator' (Name='progressIndicator');

ターゲット要素は 'ProgressIndicator' (Name='progressIndicator') です。ターゲット プロパティは 'Visibility' (タイプ 'Visibility') です System.Windows.Data エラー: 40 : BindingExpression パス エラー: 'ProgressVisibility' プロパティが 'object' ''ProgressIndicator' (Name='progressIndicator')' に見つかりません。BindingExpression:Path=ProgressVisibility; DataItem='ProgressIndicator' (Name='progressIndicator');

ターゲット要素は 'ProgressIndicator' (Name='progressIndicator') です。ターゲット プロパティは「Visibility」(タイプ「Visibility」)

バインディング エラーがあることを感謝しますがDataContext、App.xaml.cs でメイン ウィンドウを設定しています。

MainWindow window = new MainWindow();
MainWindowViewModel mainWindowViewModel = new MainWindowViewModel();

// When the ViewModel asks to be closed, close the window.
EventHandler handler = null;
handler = delegate
{
    mainWindowViewModel.RequestClose -= handler;
    window.Close();
};
mainWindowViewModel.RequestClose += handler;

// Allow all controls in the window to bind to the ViewModel by setting the 
// DataContext, which propagates down the element tree.
window.DataContext = mainWindowViewModel;
window.Show();

では、なぜバインディングが失敗するのでしょうか?

御時間ありがとうございます。

4

1 に答える 1