0

私は、RateViewと呼ばれるカスタムコントロールがすでにあるWPFで作成されたフォームを持っています。このカスタムコントロールには4つのテキストボックスがあります(これらはすべて正常に機能しています)。ボタンも含まれています。

拡張マージン情報と呼ばれる2番目のカスタムコントロールがあります。これには、出力データのみを表示するXAMLフォームもあります。

Rateviewと呼ばれるカスタムコントロールのボタンをクリックして、XAMLキャンバスをextendedmargin info XAMLのメインウィンドウの同じ位置に表示するにはどうすればよいですか?Rateviewコントロールはメインウィンドウに5回存在するため、5つのボタンをクリックすると、ExtendedMarginInfoのポップアップを毎回同じ位置のメイン画面にextendedmargininfoのコンテンツとともに出力する必要があります。

4

2 に答える 2

2

ボタンをクリックすると、表示する現在の ViewModel を公開する ViewModel のCommandを更新するを呼び出す必要があります。次に、このプロパティをターゲット ビューの にバインドできます。プロパティを使用して、表示するものを選択できます。PropertyExtendedMarginInfoContent PropertyContentControlViewControlContentControl.ContentTemplateSelector

于 2012-08-23T11:25:52.480 に答える
0

1 つのポップアップを表示し、そのコンテンツを変更して、さまざまなコントロールを配置したいと思います。

まず、カスタム コントロールを作成します。

balloon = new LogEntryInfoBalloon();
        balloon.SetMainWindow(this);
        balloon.DataContext = vm.NotificationViewModel;

次に、ポップアップ コントロール (System.Windows.Controls.Primitives) を作成します。

localPop = new Popup();
        localPop.AllowsTransparency = true;
        localPop.Placement = PlacementMode.AbsolutePoint;
        localPop.StaysOpen = true;
        localPop.PlacementTarget = this;
        localPop.Child = balloon;

配置ターゲットは MainWindow を指します。

バルーンを閉じる (非表示にする) タイマーを定義します。

localPopTimer = new Timer(new TimerCallback(CloseLocalPopup));

クローズ機能:

private void CloseLocalPopup(object args)
    {
        var act = new Action(() =>
        {
            localPop.IsOpen = false;
        });
        Dispatcher.BeginInvoke(act, null);
    }

バルーンを表示するコードは次のようになります。

private void ShowNotifyBaloon(NotifyBaloonViewModel vm)
    {
        var act = new Action(() =>
        {
            localPop.IsOpen = true;
            localPopTimer.Change(4000, Timeout.Infinite);
        });
        Dispatcher.BeginInvoke(act, null);
    }
于 2012-08-23T11:47:17.860 に答える