Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 将布尔依赖属性绑定到按钮';s Generic.xaml中的可见性属性_Wpf_Xaml_Binding_Ivalueconverter - Fatal编程技术网

Wpf 将布尔依赖属性绑定到按钮';s Generic.xaml中的可见性属性

Wpf 将布尔依赖属性绑定到按钮';s Generic.xaml中的可见性属性,wpf,xaml,binding,ivalueconverter,Wpf,Xaml,Binding,Ivalueconverter,我有一个从Window派生的名为CarSystemWindow的类,它有一个CanPinWindow布尔依赖属性: public class CarSystemWindow : Window { public static readonly DependencyProperty CanPinWindowProperty = DependencyProperty.Register( "CanPinWindow", typeof( bool ), typeof( CarSy

我有一个从Window派生的名为CarSystemWindow的类,它有一个CanPinWindow布尔依赖属性:

public class CarSystemWindow : Window {

    public static readonly DependencyProperty CanPinWindowProperty =
        DependencyProperty.Register( "CanPinWindow", typeof( bool ), typeof( CarSystemWindow ),
                 new FrameworkPropertyMetadata( false, FrameworkPropertyMetadataOptions.AffectsArrange ) );

    public bool CanPinWindow {
        get { return (bool) GetValue( CanPinWindowProperty ); }
        set { SetValue( CanPinWindowProperty, value ); }
    }

    . . .
}
在Generic.xaml中,我为CarSystemWindow类定义了默认样式:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:local="clr-namespace:CarSystem.CustomControls"
                    xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" 
                    xmlns:Telerik_Windows_Controls_Chromes="clr-namespace:Telerik.Windows.Controls.Chromes;assembly=Telerik.Windows.Controls">

    <BooleanToVisibilityConverter x:Key="BoolToVisbility" />

    <Style TargetType="{x:Type local:CarSystemWindow}">
        <Setter Property="WindowState" Value="Maximized" />
        <Setter Property="WindowStyle" Value="None" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type local:CarSystemWindow}">
                    <Viewbox Name="LayoutRoot"  Stretch="Uniform">
                        <StackPanel>
                            <Grid Background="#FF3C4B66" Height="50" Name="PART_Title">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*" />
                                    <ColumnDefinition Width="50" />
                                    <ColumnDefinition Width="50" />
                                    <ColumnDefinition Width="50" />
                                </Grid.ColumnDefinitions>
                                <Label Content="{TemplateBinding Title}" 
                                       FontSize="32" 
                                       Foreground="White" 
                                       Grid.Column="0" 
                                       HorizontalAlignment="Left" 
                                       Name="PART_TitleLabel" />
                                <Button Grid.Column="1" 
                                        Margin="5" 
                                        Name="PART_PushpinButton" 
                                        Visibility="{Binding CanPinWindow, Converter={StaticResource BoolToVisbility}, RelativeSource={RelativeSource Self}}">
                                    <Image Name="PART_PushpinImage" Source="/CarSystem;component/Resources/Unpinned.png" />
                                </Button>
                                <Button Grid.Column="2" 
                                        Margin="5" 
                                        Name="PART_MinimizeButton">
                                    <Image Name="PART_MinimizeButtonImage" Source="/CarSystem;component/Resources/Minimize.png" />
                                </Button>
                                <Button Grid.Column="3" 
                                        Margin="5" 
                                        Name="PART_CloseButton">
                                    <Image Name="PART_CloseButtonImage" Source="/CarSystem;component/Resources/Close.png" />
                                </Button>
                            </Grid>

                            <Rectangle Fill="#FFE61E0F" Height="4" Name="PART_TitleBar" />

                            <Grid Background="#FF3C4B66" Height="25" Name="PART_SubTitle">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="Auto" />
                                    <ColumnDefinition Width="Auto" />
                                    <ColumnDefinition Width="*" />
                                </Grid.ColumnDefinitions>
                                <Label Content="{TemplateBinding DeviceType}" 
                                       FontSize="22" 
                                       Foreground="White" 
                                       Grid.Column="0" 
                                       HorizontalContentAlignment="Right" 
                                       Margin="5" 
                                       MinWidth="75" 
                                       Name="PART_DeviceTypeLabel" />
                                <Label Content="{TemplateBinding DeviceName}" 
                                       FontSize="22" 
                                       Foreground="White" 
                                       Grid.Column="1" 
                                       HorizontalContentAlignment="Left" 
                                       Margin="5" 
                                       MinWidth="250" 
                                       Name="PART_DeviceNameLabel" />
                                <Rectangle Fill="White" Grid.Column="2" Name="PART_SubTitleRight" />
                            </Grid>

                            <Rectangle Fill="#FF3C4B66" Height="4" Name="PART_TitleBottom" />

                            <ContentPresenter Name="PART_ClientArea" />

                        </StackPanel>
                    </Viewbox>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

    . . .

</ResourceDictionary>

. . .
PART_PushpinButton的Visibility属性的绑定不起作用。该按钮始终可见,即使属性默认为false。我做错了什么


Tony

我认为
相对资源
应该是
模板化的parent
,而不是
Self
。还是我遗漏了你的代码

<Button Grid.Column="1" 
    Margin="5" 
    Name="PART_PushpinButton" 
    Visibility="{Binding CanPinWindow, Converter= {StaticResource BoolToVisbility}, RelativeSource={RelativeSource TemplatedParent}}">