2

XAML

<Popup Name="popUpProgress" Width="225" Height="85"                   
           IsOpen="{Binding PopUpIsOpen,Mode=OneWay}"
           Placement="Center" PlacementTarget="{Binding ElementName=stkListview}" 
           VerticalAlignment="Top">
    <Border BorderThickness="1" Background="Blue"  >
        <Grid   Width="225" Height="85">
            <Grid.RowDefinitions>
                <RowDefinition Height="30" />
                <RowDefinition Height="30" />
            </Grid.RowDefinitions>
            <Label x:Name="lblProgress" Content="Please Wait ...." Margin="10,5,0,0" HorizontalAlignment="Left" Grid.Row="1" />
        </Grid>
    </Border>
</Popup>

ビュー モデル:

private bool _PopUpIsOpen;

public bool PopUpIsOpen
{
    get { return _PopUpIsOpen; }
    set
    {
        _PopUpIsOpen = value;
        RaisePropertyChanged(() => this.PopUpIsOpen);
    }
}

public RelayCommand SubmitCommand { get; private set; }

private bool SubmitCommandCanExecute()
{
    return true;
}

private void SubmitCommandExecute()
{

    PopUpIsOpen = true;

    dsStandardListbyMarket = marketBL.StandardListbyMarketBL(Convert.ToInt32(SelectdMarketId), Convert.ToInt32(Users.UserId));
    GetComboboxMappingCollections(Convert.ToInt32(this.SelectdMarketId), Users.UserId);
    FItems = new ObservableCollection<MarketRecord.FItem>();
    FItems.CollectionChanged += OnUICollectionChanged;
    marketBL.FetchMarketRecords(Convert.ToInt32(this.SelectdMarketId));
    IsSubmitButtonVisible = true;

    PopUpIsOpen = false;
}

送信ボタンをクリックすると、コントロールが表示されますSubmitCommandExecuteが、Popupウィンドウが表示されません。私はWPFに少し慣れていないので、頭を悩ませています。最後に、ここでこの質問を提起します。何が間違っている可能性があります。

4

2 に答える 2

1

問題は、コードをテストする方法にあると思います。UI スレッドでスリープしているため、UI はバインドされたプロパティで true から false への変更を認識しません。スレッドで Sleep の代わりにタイマーを使用してみてください。

于 2012-12-31T09:33:20.057 に答える
-2

msdn の RaisePropertyChanged 構文を考えると:

protected internal void RaisePropertyChanged (
   string propertyName
)

RaisePropertyChanged("PopUpIsOpen");代わりに試してみてくださいRaisePropertyChanged(() => this.PopUpIsOpen);

于 2012-12-31T09:26:10.667 に答える