2015-11-05 54 views
0

我確實遇到了綁定我的usercontrol的可見性的問題。usercontrol的綁定可見性不會崩潰控制

與可見性類型的依賴項屬性的綁定工作正常,並且DP保存了正確的值(在本例中爲摺疊)。我的網格在UserControl中的內容設置爲摺疊狀態,但空洞控制不會摺疊。它仍然保持着由he和heig定義的空間,正如xaml中所引用的那樣。

編輯:我發現,問題是我在XAML中設置寬度和高度,我參考我的用戶控件。如果我不這樣做,控件崩潰正確(因此綁定工作正常)。但我需要設置寬度和heigth以防usercontrol可見。

任何想法如何我可以解決這個問題?

<my:MenuButtonBase x:Class="bxSuite.Controls.MenuButtonLarge" 
      xmlns:my="clr-namespace:bxSuite.Controls" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      Background="Black" 
      > 
    <Grid Visibility="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}, Path=ButtonVisibility}" > 
     <StackPanel> 
      <Image Source="{Binding ButtonImageSource}" Margin="5,10,5,5" Width="48" Height="48" VerticalAlignment="Top" HorizontalAlignment="Center" /> 
      <TextBlock Text="{Binding FunctionHeader}" Foreground="White" TextWrapping="Wrap" TextAlignment="Center" Padding="5,5,5,5" FontSize="12" /> 
     </StackPanel> 
    </Grid> 
</my:MenuButtonBase> 

在XAML中我引用我的用戶是這樣的(在轉換器正確地產生,可視性狀態):

<my:MenuButtonLarge Name="btnInEuqipment" ButtonVisibility="{Binding Path=User, Converter={StaticResource ConverterUserRightVisibility}, ConverterParameter=5}" VerticalAlignment="Top" FunctionHeader="{lex:Loc Key=MenuButton_InEquipment}" Width="130" ButtonImageSource="/bxSuite.RolloutManager;component/Images/inequipment_48x48.png" BackgroundEnabled="#FF0694FD" BackgroundHover="#FF0072C6" MenuButtonClick="btnInEuqipment_MenuButtonClick" Height="95" Margin="5,10,0,0" /> 

回答

0

嘗試設置用戶控件,而不是電網的知名度,應該工作。

你的代碼應該是這樣的。

<my:MenuButtonBase x:Class="bxSuite.Controls.MenuButtonLarge" 
     xmlns:my="clr-namespace:bxSuite.Controls" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     Visibility="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}, Path=ButtonVisibility}" 
     Background="Black"> 
<Grid> 
    <StackPanel> 
     <Image Source="{Binding ButtonImageSource}" 
       Margin="5,10,5,5" 
       Width="48" 
       Height="48" 
       VerticalAlignment="Top" 
       HorizontalAlignment="Center" /> 
     <TextBlock Text="{Binding FunctionHeader}" 
        Foreground="White" 
        TextWrapping="Wrap" 
        TextAlignment="Center" 
        Padding="5,5,5,5" 
        FontSize="12" /> 
    </StackPanel> 
</Grid> 

不要忘記更新您綁定的的RelativeSource。

+0

嗨布魯諾,thanx爲您的建議。我把它寫在你寫的方式,但結果UControl顯示爲可見。但我認爲這可能是因爲我不明白你的意思,「不要忘記更新你的綁定的相對來源」。我會將我的xaml參考複製到上面的票證中,向您展示如何使用我的usercontrol。 – Mike