我有3个TextBoxes(Id1,Name和Salary).Id并且Salary应该包含整数,并且Name只应包含字符.我需要对TextBox进行验证,它应该在输入错误的字符或整数时显示错误.也可以只在没有代码隐藏的Xaml中完成吗?请帮我提供所需的代码
这是Xaml代码:
<TextBox Name="tb1" HorizontalAlignment="Left" Height="20" Margin="60,10,0,0" TextWrapping="NoWrap" Text="{Binding SelectedItem.Id,ElementName=dgsample}" VerticalAlignment="Top" Width="100" />
<TextBox Name="tb2" HorizontalAlignment="Left" Height="20" Margin="60,60,0,0" TextWrapping="NoWrap" Text="{Binding SelectedItem.Name, ElementName=dgsample}" VerticalAlignment="Top" Width="100"/>
<TextBox Name="tb3" HorizontalAlignment="Left" Height="20" Margin="60,110,0,0" TextWrapping="NoWrap" Text="{Binding SelectedItem.Salary, ElementName=dgsample}" VerticalAlignment="Top" Width="100"/>
Run Code Online (Sandbox Code Playgroud) 我有以下课程
public class Car
{
public Name {get; set;}
}
我想以编程方式将其绑定到文本框.
我怎么做?
在黑暗中拍摄:
...
Car car = new Car();
TextEdit editBox = new TextEdit();
editBox.DataBinding.Add("Name", car, "Car - Name");
...
我收到以下错误
"无法绑定到目标控件上的'属性'名称.
我做错了什么,我应该怎么做?我发现数据绑定概念来自Web开发有点难以理解.
我有一个ListBox控件,我在网格布局中呈现固定数量的ListBoxItem对象.所以我将ItemsPanelTemplate设置为Grid.
我从后面的代码访问Grid以配置RowDefinitions和ColumnDefinitions.
到目前为止,它都像我期望的那样工作.我有一些自定义的IValueConverter实现,用于返回每个ListBoxItem应该出现的Grid.Row和Grid.Column.
但是我有时会遇到奇怪的绑定错误,我无法弄清楚它们为什么会发生,或者即使它们在我的代码中.
这是我得到的错误:
System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.ItemsControl', AncestorLevel='1''. BindingExpression:Path=HorizontalContentAlignment; DataItem=null; target element is 'ListBoxItem' (Name=''); target property is 'HorizontalContentAlignment' (type 'HorizontalAlignment')
谁能解释一下发生了什么?
哦,这是我的XAML:
<UserControl.Resources>
<!-- Value Converters -->
<v:GridRowConverter x:Key="GridRowConverter" />
<v:GridColumnConverter x:Key="GridColumnConverter" />
<v:DevicePositionConverter x:Key="DevicePositionConverter" />
<v:DeviceBackgroundConverter x:Key="DeviceBackgroundConverter" />
<Style x:Key="DeviceContainerStyle" TargetType="{x:Type ListBoxItem}">
<Setter Property="FocusVisualStyle" Value="{x:Null}" />
<Setter Property="Background" Value="Transparent" />
<Setter Property="Grid.Row" Value="{Binding Path=DeviceId, Converter={StaticResource GridRowConverter}}" />
<Setter Property="Grid.Column" Value="{Binding Path=DeviceId, Converter={StaticResource GridColumnConverter}}" />
<Setter Property="Template"> …Run Code Online (Sandbox Code Playgroud) 我已经看到bind和eval可以互换使用,尤其是在ASP.NET GridViews中.有什么不同?
有什么区别
<%# Eval("State") %>
Run Code Online (Sandbox Code Playgroud)
在你的aspx页面,而不是
<%# DataBinder.Eval(Container.DataItem, "State") %>
Run Code Online (Sandbox Code Playgroud)
在你的aspx页面?
我有一个TextBox和ToolBar一个Button.如果我正在键入,TextBox我点击Button我想要TextBox丢失,Focus所以绑定得到更新.我不想加UpdateSourceTrigger=PropertyChanged我的TextBox.但是当我点击Button我重置Focus到主窗口时,我所做的就是丢失Focus并更新绑定.
我尝试OnClick使用以下内容添加到按钮,但它似乎不起作用:
private void Button_Click(object sender, RoutedEventArgs e) {
FocusManager.SetFocusedElement(this, null);
}
Run Code Online (Sandbox Code Playgroud)
任何提示将不胜感激.
谢谢,劳尔
是否可以使用ObjectDataProvider方法将ListBox绑定到枚举,并以某种方式设置样式以显示描述attriibute?如果是这样,怎么会这样做...?
我正在尝试绑定List<T>到DataGridView控件,我没有运气创建自定义绑定.
我试过了:
gvProgramCode.DataBindings.Add(new Binding("Opcode",code,"Opcode"));
Run Code Online (Sandbox Code Playgroud)
它抛出一个异常,说该属性名称没有找到任何内容.
相关列的名称是"操作码".List<T>操作码中的属性名称.
回答编辑:问题是我的类中没有可绑定字段作为属性,只有公共字段......显然它不反映字段,只反映属性.
我正在尝试创建一个自定义控件 - 一个按钮 - 根据数据上下文中属性的值,它将应用多种样式.
我在想的是使用类似的东西:
<Button Style="{Binding Path=ButtonStyleProperty, Converter={StaticResource styleConverter}}" Text="{Binding Path=TextProp}" />
Run Code Online (Sandbox Code Playgroud)
在代码中......实现一个IValueConverter,它在ConvertTo方法中执行类似下面的代码:
switch(value as ValueEnums)
{
case ValueEnums.Enum1:
FindResource("Enum1ButtonStyle") as Style;
break;
... and so on.
}
Run Code Online (Sandbox Code Playgroud)
但是我不完全确定如何拉出样式对象,即使这是可能的......
我正在做的事情是处理DataContextChanged事件,然后将处理程序附加到PropertyChanged绑定到按钮的对象的事件 - 然后在那里运行switch语句.
它不是很完美,但在我找到一个更好的解决方案之前,我似乎必须使用它.
已更新至Android Studio 1.3.1并尝试配置dataBinding
顶级gradle文件包含
dependencies {
classpath 'com.android.tools.build:gradle:1.3.1'
classpath 'com.android.databinding:dataBinder:1.0-rc1'
}
Run Code Online (Sandbox Code Playgroud)
项目gradle文件包含
apply plugin: 'com.android.application'
apply plugin: 'com.android.databinding'
android {
compileSdkVersion 22
buildToolsVersion '22.0.0'
Run Code Online (Sandbox Code Playgroud)
但我得到了以下信息
在错误的位置生成的源文件夹
Warning:Folder /Users/myname/workspace/discoveroom/android-client/Caldroid/build/data-binding-info/debug
Warning:Folder /Users/myname/workspace/discoveroom/android-client/DiscoveroomAndroidClient/build/data-binding-info/debug
Information:3rd-party Gradle plug-ins may be the cause
Run Code Online (Sandbox Code Playgroud)