【发布时间】:2021-02-24 23:29:27
【问题描述】:
我有三个按钮。如果元素可以更改,则保存按钮的颜色为绿色,如果无法更改,则为灰色。我将按钮的颜色与 ViewModel 上的属性绑定,该属性是一个字符串,并使用 Converter 转换字符串的值。当我从按钮中删除颜色的绑定时,尺寸很好,但使用绑定后,尺寸小于其他按钮的尺寸。
<StackLayout Grid.Row="3"
Orientation="Horizontal"
Padding="5,5,5,5"
BackgroundColor="CadetBlue">
<Button x:Name="wczytajWzorzecButton"
WidthRequest="120" HeightRequest="20"
Text="Last" FontSize="12"
HorizontalOptions="CenterAndExpand"
Command="{Binding GetTemplateCommand}"/>
<Button x:Name="wczytajOstatniButton"
WidthRequest="120" HeightRequest="20"
Text="First" FontSize="12"
HorizontalOptions="EndAndExpand"
Command="{Binding GetLastDocumentCommand}"/>
<Button x:Name="saveButton"
WidthRequest="120" HeightRequest="20"
Text="Save" FontSize="12"
BackgroundColor="{Binding PropertyButtonColor, Converter={StaticResource StringToColorConverter}}"
HorizontalOptions="StartAndExpand"
Command="{Binding SaveDocumentCommand}"/>
</StackLayout>
我的转换器:
public class StringToColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string valueAsString = value.ToString();
switch (valueAsString)
{
case ("White"):
{
return Color.White;
}
case ("Gray"):
{
return Color.DarkGray;
}
case ("LighGreen"):
{
return Color.LightGreen;
}
default:
{
return Color.FromHex(value.ToString());
}
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return null;
}
}
我的视图模型:
public string PropertyButtonColor
{
get
{
if (CanSave())
return "Green";
else
return "Gray";
}
}
关于它为什么会发生的任何想法?
【问题讨论】:
-
请截图。顺便说一句,为什么不在 ViewModel 中返回“Color.Green”而不是返回字符串。
标签: c# .net xaml xamarin xamarin.forms