小编Rob*_*ney的帖子

为什么Button的背景会改变?

我是WPF的初学者,我甚至不知道在哪里寻找这个问题的答案.这个XAML对我来说非常简单:

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Grid>
    <Button>
      <Button.Style>
        <Style TargetType="{x:Type Button}">
        <Style.Triggers>
          <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="Background" Value="Green"/>
          </Trigger>      
        </Style.Triggers>
        </Style>
      </Button.Style>
      <Button.Content>Test</Button.Content>
    </Button>
  </Grid>
</Page>
Run Code Online (Sandbox Code Playgroud)

当我将鼠标悬停在按钮上时,IsMouseOver更改为True触发器会使背景变为绿色.一瞬间.然后它变成蓝色.

更好的是:如果我将相同的setter附加到IsFocused属性,一旦我专注于按钮,背景颜色会在绿色和蓝色之间徘徊.

Button中有一些东西(我猜它是在Vista下使用的默认主题),这使得它以这种方式运行.我怀疑触发器需要设置另一个属性.但是什么?

wpf triggers styles button

4
推荐指数
2
解决办法
8746
查看次数

如何让IE 7打开XHTML文件?

我正在构建的应用程序正在生成XHTML文档,这些文档将以多种不同方式分发,包括电子邮件.我可以在Firefox或Chrome中打开这些文档("打开"我的意思是从Windows资源管理器,而不是通过Web服务器).但是,对于IE 7,我有两个 - 可能是三个 - 不同的问题.

如果文件以扩展名".xhtml"命名,则IE启动然后关闭.有时它仍然在任务管理器中运行,我必须杀死它.有时不是.

如果我用扩展名".htm"或".html"命名它们,那么它们会正常打开,除了IE信息栏出现告诉我它已经阻止了某种内容.这些文档不包含任何脚本或iframe或对象 - 它们可以像普通的XHTML一样.他们甚至不参考外部CSS.

当我正在开发这个用户的客户在他的环境中打开文档时(他此时只使用".xhtml"扩展名),IE打开它们并将它们呈现为XML文档.

我花了相当多的时间在Google上试图找到它的底部,我在那里发现的一切都与在HTTP标题中指定MIME类型有关,这不是特别有用,因为我实际上并不是提供这些文件.

所有(似乎)文件都具有正确的DOCTYPE,处理指令和命名空间声明; 每个的顶部看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

xhtml internet-explorer

3
推荐指数
1
解决办法
9556
查看次数

为什么我不能在UserControl中重置TextBox的背景?

我已经构建了一个UserControl,它以有趣和有用的方式扩展了ComboBox的功能.当它下降时看起来像这样:

我的用户控制

我已经在控件中构建了一大堆功能,它们都能顺利运行.这让我相信我对于我正在做的事情有一些线索.你认为让UserControl的样式设置可编辑的TextBox的背景画笔是一件小事.事实上,这似乎是不可能的.我很困惑.

UserControl的XAML,非常简略(你会为此感谢我),看起来像这样:

<UserControl x:Class="MyApp.CodeLookupBox" x:Name="MainControl">
    <UserControl.Resources>
       <!-- tons of DataTemplates and Styles, most notably the style that
            contains the control template for the ComboBox -->
    <UserControl.Resources>
    <ComboBox x:Name="ComboBox" 
                   Margin="0" 
                   Style="{DynamicResource ComboBoxStyle1}" 
                   VerticalAlignment="Top"
                   ItemTemplate="{StaticResource GridViewStyleTemplate}"/>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

在这个控件中有很多代码隐藏,主要是依赖属性,我用它来选择下拉列表中使用的模板.

让我疯狂的是可编辑的文本框.我希望能够从用户控件的样式设置其背景画笔 - 例如,当我在我的XAML中声明其中一个用户控件时,它使用如下样式:

<Style TargetType="{x:Type local:CodeLookupBox}">
    <Style.Triggers>
        <DataTrigger Binding="{Binding IsRequired}" Value="True">
            <Setter Property="EditableTextBoxBackground" Value="{StaticResource RequiredFieldBrush}"/>
        </DataTrigger>
    </Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)

我开始简单地设置UserControl的背景,但是设置了可编辑TextBox 背后的背景.TextBox本身仍然是白色的.

在ComboBox的模板中,有一个控制TextBox的样式:

<Style x:Key="ComboBoxEditableTextBox" TargetType="{x:Type TextBox}">
    <Setter Property="OverridesDefaultStyle" Value="true"/>
    <Setter Property="AllowDrop" Value="true"/>
    <Setter Property="MinWidth" Value="0"/>
    <Setter Property="MinHeight" Value="0"/>
    <Setter Property="FocusVisualStyle" Value="{x:Null}"/> …
Run Code Online (Sandbox Code Playgroud)

wpf user-controls controls templates styles

3
推荐指数
1
解决办法
1059
查看次数

在RegEx中检测角度和花括号

我有一个正则表达式来验证文本框只允许特定字符.我目前的表达方式是

pattern = "^([-_,A-Za-z0-9 !@#$%^&()=+;'.~`]{1,60})$";
Run Code Online (Sandbox Code Playgroud)

如果输入的字符不是,则报告错误.这非常有效.现在我想允许[,],{}(方大括号)为有效字符.我尝试包含这些但是IsMatch如果我将它们包含在我拥有的模式中,该方法总是返回false.我按如下方式添加了它们,

pattern = "^([-_,A-Za-z0-9 !@#$%^&()[]{}=+;'.~`]{1,60})$";
Run Code Online (Sandbox Code Playgroud)

我测试了这个只是字母数字字符串值.IsMatch也就此返回false.我很确定我对包含的新东西做错了.

任何人都可以让我知道修改后的模式有什么问题吗?

.net c# regex validation textbox

0
推荐指数
1
解决办法
2314
查看次数