Xaml 首次绘制控件后,表单ControlTemplate绑定失败
我有一个Xaml 首次绘制控件后,表单ControlTemplate绑定失败,xaml,xamarin,xamarin.forms,data-binding,Xaml,Xamarin,Xamarin.forms,Data Binding,我有一个ControlTemplate来修改Xamarin.Forms中单选按钮的外观。 我从你那里借来/更新了它 它看起来很棒,创建页面时外观也很完美。 我希望radiobutton中的图像根据绑定进行更改,但实际情况并非如此。 绑定属性被修改,调用了OnPropertyChanged(),但绑定未被触发 以下是总体外观(其中两个RadioButtons并排) 同样,外观和转换器以及一切工作正常,但只有在第一次绘制页面时 这是ControlTemplate <ControlTempla
ControlTemplate
来修改Xamarin.Forms中单选按钮的外观。我从你那里借来/更新了它 它看起来很棒,创建页面时外观也很完美。
我希望radiobutton中的图像根据绑定进行更改,但实际情况并非如此。
绑定属性被修改,调用了OnPropertyChanged(),但绑定未被触发 以下是总体外观(其中两个
RadioButton
s并排)
同样,外观和转换器
以及一切工作正常,但只有在第一次绘制页面时
这是ControlTemplate
<ControlTemplate x:Key="RadioButtonTemplate">
<Frame
BackgroundColor="#30888888"
HasShadow="False"
HeightRequest="{TemplateBinding HeightRequest}"
WidthRequest="{TemplateBinding WidthRequest}"
HorizontalOptions="Start"
VerticalOptions="StartAndExpand"
Padding="0">
<VisualStateManager.VisualStateGroups>
<VisualStateGroupList>
<VisualStateGroup x:Name="CheckedStates">
<VisualState x:Name="Checked">
<VisualState.Setters>
<Setter Property="BorderColor" Value="Accent" />
<Setter TargetName="check"
Property="Opacity"
Value="1" />
<Setter TargetName="checkrim"
Property="Opacity"
Value="1" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Unchecked">
<VisualState.Setters>
<Setter Property="BackgroundColor" Value="{DynamicResource TransparentBackgroundColour}" />
<Setter Property="BorderColor" Value="Transparent" />
<Setter TargetName="check"
Property="Opacity"
Value="0" />
<Setter TargetName="checkrim"
Property="Opacity"
Value="0" />
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateGroupList>
</VisualStateManager.VisualStateGroups>
<Grid Margin="4"
WidthRequest="100">
<ContentPresenter Margin="6" />
<Grid WidthRequest="20"
HeightRequest="20"
Padding="0"
HorizontalOptions="Start"
VerticalOptions="Start">
<Ellipse x:Name="unckecd"
Stroke="White"
StrokeThickness="2"
Fill="Transparent"
Margin="0"
WidthRequest="20" HeightRequest="20"
HorizontalOptions="Center" VerticalOptions="Center" />
<Ellipse x:Name="checkrim"
Stroke="Accent"
StrokeThickness="2"
Fill="Transparent"
Margin="0"
WidthRequest="20" HeightRequest="20"
HorizontalOptions="Center" VerticalOptions="Center" />
<Ellipse x:Name="check"
Fill="Accent"
Margin="1,1,0,0"
WidthRequest="10" HeightRequest="10"
HorizontalOptions="Center" VerticalOptions="Center" />
</Grid>
</Grid>
</Frame>
</ControlTemplate>
和我的单选按钮
<Style x:Key="FancyRadioButton" TargetType="RadioButton">
<Setter Property="ControlTemplate"
Value="{DynamicResource RadioButtonTemplate}" />
</Style>
<RadioButton Style="{StaticResource FancyRadioButton}"
Value="{x:Static gdl90Types:UdpTransmitMode.UdpUnicast}"
WidthRequest="150"
HeightRequest="103">
<RadioButton.Content>
<StackLayout VerticalOptions="Start" Spacing="0" Margin="0, -3">
<Image Source="{Binding Source=ColourPresetSetting,
ConverterParameter=unicast,
Converter={StaticResource ResourceImageFromThemeConverter}}"
Margin="22,0"
Aspect="AspectFit"
/>
<Label Text="UDP UNICAST" TextColor="{DynamicResource MediumContrastTextColour}" />
</StackLayout>
</RadioButton.Content>
我只想让单选按钮中的图像
注意到属性颜色预设设置
的更改,以更新图像。
它在第一次绘制时进行绘制,但之后不再进行绘制
我是否遗漏了一些明显的内容?我猜您的bindingContext或绑定属性或使用的转换器有问题,xaml绑定日志窗格中是否显示了任何明显的错误?它绑定良好(显示页面时),并且内容没有(无法)更改。转换器很好-它只是没有被调用,因为绑定不知何故会“丢失”。属性变化很好,每次都执行OnPropertyChanged。@DefenseStrationDay我在我身边测试它,加载RadioButton时也无法获取图像源,似乎无法获取绑定数据。