문제

I created a UserControl that has a ContentControl in it. This ContentControl gets Buttons from the normal .xaml-pages. But depending on some events I need to change this Button's Label or Image but i am getting a NullReferenceException.

UserControl1.xaml

<Grid>
    <!-- different Stuff that needs to be around -->
    <ContentControl Content="{Binding UserControlContent, ElementName=userContent}"/>
</Grid>

UserControl1.xaml.cs

public static readonly DependencyProperty AppBarContentProperty =
    DependencyProperty.Register("UserControlContent", typeof(Grid), typeof(UserControl1), new PropertyMetadata(new Grid()));

public Grid UserControlContent
{
    get { return (Grid)GetValue(UserControlContentProperty); }
    set { SetValue(UserControlContentProperty, value); }
}

MainPage.xaml

<local:UserControl1>
    <local:UserControl1.UserControlContent>
        <Grid>
            <Controls:RoundButton x:Name="btn1"/>
        </Grid>
    </local:UserControl1.UserControlContent>
</local:UserControl1>

MainPage.xaml.cs

MainPage()
{
    btn1.Label = "new label";
}

As soon as I try this with a button inside of the UserControl it fails. With buttons that stay outside it works. Is there any deeper binding possible to keep control of these buttons?

도움이 되었습니까?

해결책

The trick is using the mvvm-binding!

The button's values are bound now:

Label="{Binding RoundButtons[3].Label}"
Visibility="{Binding RoundButtons[3].VisibilityState, FallbackValue=Visible}"

This allows me to define default-values and still change them on the fly as I need them to be changed.

Hope someone needs this information ;)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top