当代码隐藏中的Visibility="Visible"
属性为{{1>时,如何为控制模板中的按钮设置IsSendBtnVisible
}}?
这是我的 WPF 页面:
true
以下是此页面上文档查看器的自定义模板:
<Page
x:Class="CardViewPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="CardViewPage">
<Grid Name="content" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<DocumentViewer Margin="0" Grid.Row="0" Name="documentViewer" />
</Grid>
</Page>
答案 0 :(得分:0)
你需要为你的DocumentViewer声明DependancyProperty并在xaml ControlTemplate中使用TemplateBinding
(例如UrProperty
)
<ControlTemplate TargetType="{x:Type DocumentViewer}">
...
<Button Click="btnSendToServer_Click"
Width="25"
Height="25"
Visibility="{TemplateBinding UrProperty}"
/>
...
</ControlTemplate>
答案 1 :(得分:0)
我建议您使用数据触发器来实现这一目标......
<Button
Click="btnSendToServer_Click"
Width="25"
Height="25">
<Button.Style>
<Style>
<Setter Property="Button.Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsSendBtnVisible}" Value="True">
<Setter Property="Button.Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
确保在样式中设置已折叠的可见性,但不在按钮属性中设置。
注意:数据触发器的绑定可能会根据您的数据上下文而改变
答案 2 :(得分:0)
Dima Martovoi,bathineni - 感谢您的回复。
Dima Martovoi,我认为从DocumentViewer继承是为了解决这个小问题。 我尝试使用来自bathineni解决方案的DataTrigger变体,但它不起作用。不知道,为什么。 使用下一个绑定解决了问题:
<Button
Visibility="{Binding RelativeSource={RelativeSource AncestorType=Page},Path=SendToServerVisiblity}">
</Button>
其中
public Visibility SendToServerVisiblity
{
get
{
if (IsOnlineMode)
return Visibility.Visible;
return Visibility.Collapsed;
}
}
页面代码隐藏中的