在Windows商店应用程序项目中,我有一个Flyout,具有某种风格
<Flyout>
...
<Flyout.FlyoutPresenterStyle>
<Style TargetType="FlyoutPresenter">
<Setter Property="ScrollViewer.ZoomMode" Value="Enabled"/>
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="BorderThickness" Value="5"/>
<Setter Property="MinHeight" Value="300"/>
<Setter Property="MinWidth" Value="300"/>
<Setter x:Name="FlyMargin" Property="Margin" Value="0,0,0,0"/>
</Style>
</Flyout.FlyoutPresenterStyle>
</Flyout>
我试图在代码中以编程方式更改边距,但到目前为止我失败了
我试过这样:〜
InfoFlyout.FlyoutPresenterStyle.Setters.Add(new Setter
{
Property = FlyoutPresenter.MarginProperty,
Value = "50,0,0,0"
});
它第一次调用弹出窗口时有效,但第二次出现异常。 也试过这样的东西,但仍然无法正常工作
InfoFlyout.FlyoutPresenterStyle.Setters.ElementAt(6).SetValue(FlyoutPresenter.MarginProperty, "-28,125,0,0");
如何更改后面代码中的保证金设定者?
答案 0 :(得分:1)
您似乎无法多次添加相同的Setter
我建议您将XAML样式完全移到代码后面,设置所有属性并替换FlyoutPresenterStyleProperty:
var style = new Style(typeof(FlyoutPresenter));
style.Setters.Add(new Setter(FlyoutPresenter.MarginProperty, new Thickness(50, 0, 0, 0)));
//style.Setters.Add(new Setter(FlyoutPresenter... //Do It For All Properties
YourElementName.Flyout.SetValue(Flyout.FlyoutPresenterStyleProperty, style);
它适用于此。