通过单击事件中的c#文件重置样式值
我在Xaml中声明了一个按钮样式,我在C#文件中执行了一个单击事件,以在单击时更改某些样式,但现在,再次单击时,我想将样式重置为inicial样式。 如何管理单击和重置样式通过单击事件中的c#文件重置样式值,c#,xaml,xamarin,xamarin.forms,C#,Xaml,Xamarin,Xamarin.forms,我在Xaml中声明了一个按钮样式,我在C#文件中执行了一个单击事件,以在单击时更改某些样式,但现在,再次单击时,我想将样式重置为inicial样式。 如何管理单击和重置样式 <flv:FlowListView FlowColumnCount="3" SeparatorVisibility="None" HasUnevenRows="true" FlowItemTappedCommand="{Binding ItemTappedCommand}" Fl
<flv:FlowListView FlowColumnCount="3" SeparatorVisibility="None" HasUnevenRows="true"
FlowItemTappedCommand="{Binding ItemTappedCommand}" FlowLastTappedItem="{Binding LastTappedItem}"
FlowItemsSource="{Binding MyCategories}" >
<flv:FlowListView.FlowColumnTemplate>
<DataTemplate>
<Button Text="{Binding Name}"
TextColor="White"
x:Name="categoryButtons"
Clicked="ButtonSelected"
ContentLayout="Top"
BackgroundColor="Transparent"
BorderColor="White"
BorderWidth="2"
CornerRadius="6"
Margin="5,5,5,10" />
</DataTemplate>
</flv:FlowListView.FlowColumnTemplate>
</flv:FlowListView>
好的,那么您的FlowItemsSource将
绑定到您的ObservableCollection
或您正在使用的任何模型对象类型。数据模板中的按钮绑定到类别
类的名称属性
按如下所示为按钮指定触发器,然后单击按钮时,根据当前状态将模型对象中的属性设置为true/false
<Button
Text="{Binding Name}"
TextColor="White"
Command="{Binding ToggleCommand}"
ContentLayout="Top"
BackgroundColor="Transparent"
BorderColor="White"
BorderWidth="2"
CornerRadius="6"
Margin="5,5,5,10" >
<Button.Triggers>
<DataTrigger
TargetType="Button"
Binding="{Binding IsToggled}"
Value="True">
<Setter Property="BackgroundColor" Value="Blue" />
</DataTrigger>
</Button.Triggers>
</Button>
然后,一旦您的状态切换到真,按钮将变为蓝色,然后当它为假时,它将返回到原始透明状态
另外,请确保您的类别类正在实现INotifyPropertyChanged
好的,这样您的FlowItemsSource将绑定到您的ObservableCollection
或您正在使用的任何模型对象类型。数据模板中的按钮绑定到类别
类的名称属性
按如下所示为按钮指定触发器,然后单击按钮时,根据当前状态将模型对象中的属性设置为true/false
<Button
Text="{Binding Name}"
TextColor="White"
Command="{Binding ToggleCommand}"
ContentLayout="Top"
BackgroundColor="Transparent"
BorderColor="White"
BorderWidth="2"
CornerRadius="6"
Margin="5,5,5,10" >
<Button.Triggers>
<DataTrigger
TargetType="Button"
Binding="{Binding IsToggled}"
Value="True">
<Setter Property="BackgroundColor" Value="Blue" />
</DataTrigger>
</Button.Triggers>
</Button>
然后,一旦您的状态切换到真,按钮将变为蓝色,然后当它为假时,它将返回到原始透明状态
另外,请确保您的类别类正在实现INotifyPropertyChanged
,因此我将样式重置为默认:
public partial class CategoriesMenuDetail : ContentPage
{
public Dictionary<int, Btn> buttons { get; set; }
public CategoriesMenuDetail()
{
InitializeComponent();
buttons = new Dictionary<int, Btn>();
}
public void ButtonSelected(object sender, EventArgs e)
{
var button = (Button)sender;
if (!buttons.ContainsKey(button.GetHashCode()))
{
buttons.Add(button.GetHashCode(), new Btn(button));
}
bool state = buttons[button.GetHashCode()].Toogle();
var bgColor = (state) ? Color.FromHex("#26047AD5") : Color.FromHex("#40000000");
var borderColor = (state) ? Color.FromHex("#FF8A00") : Color.FromHex("#FFFFFF");
button.BackgroundColor = bgColor;
button.BorderColor = borderColor;
}
}
public class Btn
{
private Button _button { get; set; }
private bool isToogle = false;
public Btn(Button button)
{
_button = button;
}
public bool Toogle()
{
isToogle = !isToogle;
return isToogle;
}
}
public分部类CategoriesMenuDetail:ContentPage
{
公共字典按钮{get;set;}
公共分类详细信息()
{
初始化组件();
按钮=新字典();
}
已选择公共无效按钮(对象发送者,事件参数e)
{
var按钮=(按钮)发送器;
如果(!buttons.ContainsKey(button.GetHashCode()))
{
添加(button.GetHashCode(),新建Btn(button));
}
bool state=buttons[button.GetHashCode()].Toogle();
var bgColor=(状态)?Color.FromHex(#26047AD5”):Color.FromHex(#40000000);
var borderColor=(状态)?Color.FromHex(“#FF8A00”):Color.FromHex(“#FFFFFF”);
button.BackgroundColor=bgColor;
button.BorderColor=BorderColor;
}
}
公共类Btn
{
私有按钮_按钮{get;set;}
private bool isToogle=false;
公共Btn(按钮)
{
_按钮=按钮;
}
公共图书馆
{
iStogle=!iStogle;
返回iStogle;
}
}
因此我将样式重置为默认:
public partial class CategoriesMenuDetail : ContentPage
{
public Dictionary<int, Btn> buttons { get; set; }
public CategoriesMenuDetail()
{
InitializeComponent();
buttons = new Dictionary<int, Btn>();
}
public void ButtonSelected(object sender, EventArgs e)
{
var button = (Button)sender;
if (!buttons.ContainsKey(button.GetHashCode()))
{
buttons.Add(button.GetHashCode(), new Btn(button));
}
bool state = buttons[button.GetHashCode()].Toogle();
var bgColor = (state) ? Color.FromHex("#26047AD5") : Color.FromHex("#40000000");
var borderColor = (state) ? Color.FromHex("#FF8A00") : Color.FromHex("#FFFFFF");
button.BackgroundColor = bgColor;
button.BorderColor = borderColor;
}
}
public class Btn
{
private Button _button { get; set; }
private bool isToogle = false;
public Btn(Button button)
{
_button = button;
}
public bool Toogle()
{
isToogle = !isToogle;
return isToogle;
}
}
public分部类CategoriesMenuDetail:ContentPage
{
公共字典按钮{get;set;}
公共分类详细信息()
{
初始化组件();
按钮=新字典();
}
已选择公共无效按钮(对象发送者,事件参数e)
{
var按钮=(按钮)发送器;
如果(!buttons.ContainsKey(button.GetHashCode()))
{
添加(button.GetHashCode(),新建Btn(button));
}
bool state=buttons[button.GetHashCode()].Toogle();
var bgColor=(状态)?Color.FromHex(#26047AD5”):Color.FromHex(#40000000);
var borderColor=(状态)?Color.FromHex(“#FF8A00”):Color.FromHex(“#FFFFFF”);
button.BackgroundColor=bgColor;
button.BorderColor=BorderColor;
}
}
公共类Btn
{
私有按钮_按钮{get;set;}
private bool isToogle=false;
公共Btn(按钮)
{
_按钮=按钮;
}
公共图书馆
{
iStogle=!iStogle;
返回iStogle;
}
}
请不要多次问同一个问题times@Jason我之前的问题已经得到了回答,我现在可以在点击事件中更改按钮的颜色,我现在要做的是,无论何时在先前点击按钮后点击按钮,并相应地更改颜色,我想重置样式,就像选择和取消选择按钮作为用户的视觉表现一样,你明白我的意思吗?提前谢谢!然后,您需要保存按钮状态(您想要修改的任何属性集)并将其还原。@Jason好的,我可以在ResourceDictionary中保存初始按钮状态,但如何通过我的C#文件还原它?你能给我看一些代码吗?@LOLJovem尝试一下Button的自定义属性。如果需要,将样式更改为custome属性值。请不要多次询问相同的问题times@Jason我之前的问题已经得到了回答,我现在可以在点击事件中更改按钮的颜色,我现在试着做的是,每当按钮在之前被点击后被点击,并相应地改变颜色,我想重置样式,比如选择和取消选择按钮作为用户的视觉表现,你明白我的意思吗?提前谢谢!然后,您需要保存按钮状态(您想要修改的任何属性集)并将其还原。@Jason好的,我可以在ResourceDictionary中保存初始按钮状态,但如何通过我的C#文件还原它?你能给我看一些代码吗?@LOLJovem尝试一下Button的自定义属性。如果需要,将样式更改为custome属性值。我已经实现了给定的代码,但它现在不起作用