我禁止在禁用时更改按钮的样式:
<Style TargetType="Button" x:Key="MyButton2">
<Setter Property="Background" Value="MediumAquamarine" />
<Setter Property="Foreground" Value="MediumBlue" />
<Style.Triggers>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Background" Value="Green"/>
<Setter Property="Foreground" Value="DeepPink"/>
</Trigger>
</Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)
和我的按钮:
<Button Style="{StaticResource MyButton2}" Content="My text" Width="100" Height="30" IsEnabled="False" />
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,此样式不适用于按钮:
如何将此样式应用于我的按钮?我可以不用覆盖按钮的模板而只使用样式吗?
我有以下问题。
我有以下简单的 xaml:
<TextBox Name="NameBox" Text ="{Binding Name}" />
<Button Content="Save" Command="{Binding SaveCommand}" CommandParameter="{Binding Entity}" />
Run Code Online (Sandbox Code Playgroud)
我将此窗口的 DataContext 绑定到以下视图模型
public class MyViewModel
{
public SimpleModel Entity { get; set; }
private ICommand _saveCommand;
public ICommand SaveCommand { get { return _saveCommand ?? (_saveCommand = new MyCommand(OnSaveItem, parameter => CanSaveItem())); } }
public void OnSaveItem(object parameter)
{
// some code
}
public virtual bool CanSaveItem()
{
return !String.IsNullOrWhiteSpace(Entity.Name);
}
}
Run Code Online (Sandbox Code Playgroud)
简单模型是
public class SimpleModel
{
public int Id { get; set; …
Run Code Online (Sandbox Code Playgroud) 所以我尝试通过Xamarin Studio 5.4开发小型andriod应用程序.我的解决方案中有三个项目 - android应用程序项目(ClientProject),第一个使用的类库(MyLib)和一些控制台应用程序(ConsoleApp).
但是当我尝试将对MyLib的引用添加到ClientProject中时,我失败了.Xamarin Studio告诉我"不兼容的目标框架.NET Framework 4.0".
看起来这个
我将MyLib的框架版本更改为3.5,但是它没有任何效果.
但是,当我尝试将此引用添加到ConsoleApp时,没有问题:
所以我必须向ClientProject添加对MyLib.dll的引用,因此我无法调试其代码.我该怎么做才能解决这个问题?
我在 WPF 中的命令绑定方面遇到问题。我有以下 xaml:
<ItemsControl ItemsSource="{Binding Entity}" Name="Lst">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<Button Content="qwerty" Command="{Binding ElementName=Lst, Path=DataContext.SaveCommand}" >
<Button.ContextMenu>
<ContextMenu>
<MenuItem Header="Send2" Command="{Binding ElementName=Lst, Path=DataContext.SaveCommand}" />
</ContextMenu>
</Button.ContextMenu>
</Button>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,Button 及其 ContextMenu 具有类似的命令绑定。但是,当我单击按钮时,它的命令会触发,而当我单击上下文菜单的项目时,它的命令不会触发。我哪里错了?提前致谢!
所以我有按钮及其样式:
\n<Style TargetType="Button" x:Key="BaseButtonStyle">\n <Setter Property="FontWeight" Value="Bold" />\n <Setter Property="Width" Value="120" />\n <Setter Property="Height" Value="30" />\n <Setter Property="BorderBrush" Value="#1FA3FF" />\n</Style>\n\n<Style TargetType="{x:Type Button}" x:Key="MyButtonStyle" BasedOn="{StaticResource BaseButtonStyle}"> \n <Setter Property="Background" Value="#1FA3EB" />\n <Setter Property="Foreground" Value="#FFFFFF" />\n</Style>\n\n<Button Style="{StaticResource MyButtonStyle}" Content="My text" />\n
Run Code Online (Sandbox Code Playgroud)\n它工作正常,我得到以下结果(海蓝宝石背景不是按钮的一部分,它属于窗口):
\n但后来我想替换按钮的内容并更改我的样式:
\n<Style TargetType="{x:Type Button}" x:Key="MyButtonStyle" BasedOn="{StaticResource BaseButtonStyle}"> \n <Setter Property="Background" Value="#1FA3EB" />\n <Setter Property="Foreground" Value="#FFFFFF" />\n\n <Setter Property="Template">\n <Setter.Value>\n <ControlTemplate>\n <StackPanel Orientation="Horizontal">\n <TextBlock Text="\xe2\x88\x9a" />\n <TextBlock Text="{TemplateBinding Button.Content}" />\n </StackPanel>\n </ControlTemplate>\n </Setter.Value>\n </Setter>\n</Style>\n
Run Code Online (Sandbox Code Playgroud)\n现在我的按钮变得很糟糕: …
我对C#中的异步操作有疑问.假设我有一些像这样的代码:
public async void Download(string[] urls)
{
for(int i = 0; i < urls.Length; i++);
{
await DownloadHelper.DownloadAsync(urls[i], @"C:\" + i.ToString() + ".mp3");
}
}
Run Code Online (Sandbox Code Playgroud)
但是这段代码并没有真正异步下载文件.它开始从第一个URL下载文件,然后等待此操作.然后它开始从第二个URL下载文件......依此类推.
从而逐个下载文件,我想让它们同时开始下载.
我怎么能这样做?
c# ×5
wpf ×4
xaml ×4
.net ×1
android ×1
async-await ×1
data-binding ×1
dll ×1
mvvm ×1
styles ×1