Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.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
C# 控件模板中的绑定_C#_Silverlight_Xaml_Windows Phone 7_Windows Phone 8 - Fatal编程技术网

C# 控件模板中的绑定

C# 控件模板中的绑定,c#,silverlight,xaml,windows-phone-7,windows-phone-8,C#,Silverlight,Xaml,Windows Phone 7,Windows Phone 8,我有一个下一个控件-日历。我从nuget WPControls那里得到的。 我修改了它,因为我今天需要一个按钮 下面是一个XAML代码: <ControlTemplate x:Key="CalendarControlTemplate1" TargetType="wpControls:Calendar"> <ScrollViewer> <Grid Height="auto" Background="Black">

我有一个下一个控件-日历。我从nuget WPControls那里得到的。 我修改了它,因为我今天需要一个按钮

下面是一个XAML代码:

<ControlTemplate x:Key="CalendarControlTemplate1"  TargetType="wpControls:Calendar">
        <ScrollViewer>
            <Grid Height="auto" Background="Black">
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto"/>
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto"/>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="Auto"/>
                </Grid.ColumnDefinitions>
                <TextBlock Text="{TemplateBinding YearMonthLabel}" FontSize="{StaticResource PhoneFontSizeMediumLarge}" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center"/>
                <Button 
                Content="&lt;" 
                Width="100" 
                Grid.Column="0"
                x:Name="PreviousMonthButton" 
                HorizontalAlignment="Left" 
                VerticalAlignment="Center" 
                Visibility="{Binding ShowNavigationButtons, Converter={StaticResource BooleanToVisibilityConverter}, RelativeSource={RelativeSource TemplatedParent}}"/>
                <Button 
                Content="&gt;" 
                Width="100" 
                Grid.Column="2" 
                x:Name="NextMonthButton" 
                HorizontalAlignment="Right" 
                VerticalAlignment="Center" 
                Visibility="{Binding ShowNavigationButtons, Converter={StaticResource BooleanToVisibilityConverter}, RelativeSource={RelativeSource TemplatedParent}}"/>
                <Button Grid.Row="3" Grid.Column="1" x:Name="TodayButton" Content="{Binding Path=ButtonName}" HorizontalAlignment="Stretch" Height="100" VerticalAlignment="Bottom" Tap="Button_Tap" />

                <Grid Height="auto" Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="3" x:Name="ItemsGrid">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="*"/>
                        <RowDefinition Height="*"/>
                        <RowDefinition Height="*"/>
                        <RowDefinition Height="*"/>
                        <RowDefinition Height="*"/>
                        <RowDefinition Height="*"/>
                        <RowDefinition Height="*"/>
                    </Grid.RowDefinitions>
                    <TextBlock Text="{TemplateBinding Sunday}" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Column="1"/>
                    <TextBlock Text="{TemplateBinding Monday}" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Column="2"/>
                    <TextBlock Text="{TemplateBinding Tuesday}" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Column="3"/>
                    <TextBlock Text="{TemplateBinding Wednesday}" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Column="4"/>
                    <TextBlock Text="{TemplateBinding Thursday}" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Column="5"/>
                    <TextBlock Text="{TemplateBinding Friday}" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Column="6"/>
                    <TextBlock Text="{TemplateBinding Saturday}" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Column="7"/>
                </Grid>

            </Grid>
        </ScrollViewer>
    </ControlTemplate>
但它不起作用,为什么?如何修复它

这是我的C#代码:


您需要实现INPC(INotifyPropertyChanged),然后触发PropertyChanged事件。这将更新按钮

这正进入MVVM领域,有许多这样的框架可以帮助您实现这一点


Greg

正如Greg所说,您需要有一个实现INotifyPropertyChange的数据上下文。 还有另一种肮脏的方式,希望能奏效。 1) 像这样更改代码

public string ButtonName{get;set;}
public CalendarPage()
    {
        InitializeComponent();
        ButtonName = GS.translations["Today"];
    }
Content="{Binding ElementName=YourUserControlName,Path=ButtonName}"
2) 还有你的Xaml之类的东西

public string ButtonName{get;set;}
public CalendarPage()
    {
        InitializeComponent();
        ButtonName = GS.translations["Today"];
    }
Content="{Binding ElementName=YourUserControlName,Path=ButtonName}"

你给你的用户名一个密钥了吗?比如x:Name或者x:key?应该应用于“YourUserControlName”是的。看起来是这样的:不。它将是承载按钮的控件名。假设它是一扇窗户。。内容将是content=“{Binding ElementName=myWindow,Path=ButtonName}”为您的窗口指定一个x:Name,并用它替换“YourUserControlName”。
Content="{Binding ElementName=YourUserControlName,Path=ButtonName}"