如何设置Dialog Presenter Center屏幕?

时间:2011-11-11 07:29:35

标签: wpf templates xaml custom-controls modal-dialog

我正在使用Brads Dialog Presenter

效果很好,但我只有一个问题......

我无法得到它,以便对话框显示中心屏幕。

请有人帮我。

2 个答案:

答案 0 :(得分:1)

converter  为我工作。

DialogPresenter.Generic.xaml

<controls:DragCanvas Name="DialogCanvas">
  <Grid x:Name="Dialog"  ...>
    <Canvas.Top>
        <MultiBinding Converter="{StaticResource CenterConverter}" ConverterParameter="top">
            <Binding ElementName="DialogCanvas" Path="ActualWidth" />
            <Binding ElementName="DialogCanvas" Path="ActualHeight" />
            <Binding ElementName="Dialog" Path="ActualWidth" />
            <Binding ElementName="Dialog" Path="ActualHeight" />
        </MultiBinding>
    </Canvas.Top>
    <Canvas.Left>
        ...
    </Canvas.Left>

答案 1 :(得分:0)

有几种方法可以让对话框居中。

  1. 在DialogPresenter类中,更新Show()方法以设置window.WindowStartupPosition = WindowStartupLocation.CenterScreen。

  2. 编写自定义TriggerAction并覆盖Invoke以执行以下操作。

    var window = Window.GetWindow(this.AssociatedObject); window.WindowStartupLocation.CenterScreen

    然后将触发器操作附加到触发器部分中的ControlTemplate。您可以使用LoadedEvent并调用TriggerAction来使用EventTrigger。

  3. 注意:如果你有ExpressionBlend,它会将TriggerActions拖动到UI很容易,因为它会为你编写EventTrigger部分。