我要绑定ParentSidebar的SelectIngredient到根Sidebar以下XAML.DataContext的Sidebar,所以我不能用它设置一些数据在后台代码.我想在不使用的情况下实现这一点ElementName.可能吗?
<Sidebar x:Class="MyApplication.Sidebar"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Sidebar.Resources>
<SelectIngredient x:Key="selectIngredient" x:Name="selectIngredient"
ParentSidebar="{Binding ???}">
</SelectIngredient>
</Sidebar.Resources>
</Sidebar>
Run Code Online (Sandbox Code Playgroud)
编辑:
在Visual Tree中,Sidebar是一个兄弟姐妹SelectIngredient.所以它只是逻辑上的父母,但实际上并非如此.
我正在构建一个WPF应用程序,我的UI由组合框和大约十几个其他UI控件组成.我有一个业务对象类,包含十几个属性并实现INotifyPropertyChanged.
这是我的业务对象的片段:
public class MyBusinessObject : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(PropertyChangedEventArgs e)
{
if (PropertyChanged != null)
{
PropertyChanged(this, e);
}
}
private int _idNumber;
public int IdNumber
{
get { return _idNumber; }
set
{
if (_idNumber == value)
{
return;
}
_idNumber = value;
OnPropertyChanged(new PropertyChangedEventArgs("IdNumber"));
}
}
private string _name;
public string Name
{
get { return _name; }
set
{
if (_name == value)
{
return;
}
_name = value;
OnPropertyChanged(new PropertyChangedEventArgs("Name")); …Run Code Online (Sandbox Code Playgroud) 在我的Grails 2.3.8应用程序中,我已经定义了以下控制器操作
class RegisterController {
def register(User user) {
render text: "User name is '$user.name'"
}
}
Run Code Online (Sandbox Code Playgroud)
该user参数是一个域类的实例.如果我使用URL调用此控制器
http://localhost:8080/myapp/register/register
Run Code Online (Sandbox Code Playgroud)
我得到了NullPointerException.但是,我对数据绑定的理解是,如果在没有任何参数的情况下调用此操作,则应为该参数指定一个new User()
我刚刚发现了淘汰赛(3.0和3.1)和复选框的问题
问题是,复选框的更改事件绑定不会在不同的浏览器中一致地发生.
请参阅下面的代码
<table >
<tr>
<td >
<input type="checkbox" data-bind='checked: CheckVal, event: { change: refresh }' />
</td>
<td>Check Value in checked binding: <span data-bind="text: CheckVal"></span>
</td>
</tr>
<tr>
<td></td>
<td>Check Value in changed event binding: <span data-bind="text: CheckValChanged"></span>
</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
和javascript
function MainViewModel() {
var self = this;
this.CheckVal = ko.observable(true);
this.CheckValChanged = ko.observable(true);
this.refresh = function() {
self.CheckValChanged(self.CheckVal());
}
}
viewModel = new MainViewModel();
ko.applyBindings(viewModel);
Run Code Online (Sandbox Code Playgroud)
在Firefox中,更改事件绑定发生在复选框值更改后,因此在更改事件处理程序中,我们可以读取复选框的实际值(即,如果选中复选框,则绑定字段的值为value = true).
在所有其他浏览器中(我使用Chrome,IE 11,Opera和Safari测试过),更改事件绑定似乎在实际更改绑定字段的值之前发生(即,选中复选框,在更改处理程序中读取的值)是false,如果未选中,则读取的值为true)
你可以在http://jsfiddle.net/bzamfir/su6SW/2/看到这个问题.
问题不仅在于浏览器中的行为不一致,而且对于大多数浏览器而言,这似乎是违反直觉的:事件是变化 …
在我的项目早期,我无法隔离我的一些观点,并且必须直接在index.html中开发它们.具体来说,我的导航菜单.
现在我已经能够开始ng-include工作了,我想把我的菜单拉进nav.html.这完全没问题,但功能几乎完全符合预期.
但我的菜单中有一个搜索栏,不再起作用.最初,即使我的导航菜单直接在index.html内,它过滤的内容也在ng-view.我想要过滤的视图和导航都在同一个控制器下,我没有更改ng-view组件.但是现在我已经隔离了nav.html,搜索过滤器似乎不再具有约束力.
index.html:
...
<body>
<div ng-include="'views/nav.html'"></div>
<div ng-view></div>
...
</body>
...
Run Code Online (Sandbox Code Playgroud)
nav.html:
<div class="nav">
<div ng-controller="NavController">
...
<div class="searchbar">
<input type="text" name="input" value="Search" ng-model="search" />
<!--ng-model="search" is the binding component, as I understand-->
</div> <!--end searchbar div-->
...
</div> <!--end NavController div-->
</div> <!--end nav div-->
Run Code Online (Sandbox Code Playgroud)
table.html :(要过滤的内容ng-view)
<div ng-controller="NavController">
<table>
<tr class="title_bar">
<td>Title</td>
<td>A</td>
<td>B</td>
</tr>
<tr ng-repeat="item in listOfItems | filter:search">
<!--table rows should be filtered …Run Code Online (Sandbox Code Playgroud) 我读自创AngularJS和具有怎样的一个体面的理解$scopes,$watch和$digest工作.我了解当你添加自己的$watches并且打电话给自己时它是如何工作的$digests.但是,我对于默认情况下究竟发生了什么感到困惑.
$scope.$$watchers默认添加什么?你穿的一切$scope?你指定的所有东西ng-model?都?别的什么?
什么时候确实$digests被默认触发?输入字段更改?输入字段用ng-models?其他?
如标题所示,我想根据从数据库中获取的一些信息向表(在aspx页面中)添加一些内容(因此,如果我在db中有一个项x,我将在cs中创建一个bool类型变量)。
我的问题是,是否有任何方法可以将该bool发送给aspx,因此可以在if语句中使用它(以便将相应的列添加到我的表中)。
我有一个布尔属性,它查看几个复选框,如果选中其中任何一个,则返回true.如果选中任何复选框,我想启用一个按钮(属性返回true).
目前我有以下内容:
数据上下文集
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
}
Run Code Online (Sandbox Code Playgroud)按钮绑定集
<Button Name="button" IsEnabled="{Binding ButtonEnabled}">Apply</Button>
Run Code Online (Sandbox Code Playgroud)该物业
public bool ButtonEnabled
{
get
{
if(checkboxes_enabled)
return true;
else
return false;
}
}
Run Code Online (Sandbox Code Playgroud)我已经验证了该属性正在按预期更新,因此它缩小为绑定问题.我也尝试过按钮内的数据触发器:
<Button Name="button" Content="Apply">
<Button.Style>
<Style TargetType="{x:Type Button}">
<Style.Triggers>
<DataTrigger Binding="{Binding ButtonEnabled}" Value="True">
<Setter Property="IsEnabled" Value="True"/>
</DataTrigger>
<DataTrigger Binding="{Binding ButtonEnabled}" Value="False">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
Run Code Online (Sandbox Code Playgroud) 我有一个 在我的表格上ComboBox绑定的DependencyProperty.我可以通过Button点击向这个属性添加项目,它会将它们添加到ComboBox.但是,一旦我放下ComboBox绑定断裂.我仍然可以向该属性添加项目,但我ComboBox永远不会更新以显示它们.
例如
Button三次ComboBox下来-这将有三个项目Button另外三次ComboBox下来-它仍然将只有三个项目再次启动应用程序并:
Button六次ComboBox下来-这将有六个项目<Grid x:Name="LayoutRoot"
Background="White">
<ComboBox Name="combTest"
ItemsSource="{Binding Users}"
Width="50"
Height="50"
HorizontalAlignment="Left" />
<Button Click="ButtonBase_OnClick"
Width="50"
Height="50"
HorizontalAlignment="Right" />
</Grid>
Run Code Online (Sandbox Code Playgroud)
public MainPage()
{
InitializeComponent();
this.DataContext = this;
}
public static readonly DependencyProperty UsersProperty = DependencyProperty.Register(
"Users", typeof (List<string>), typeof (MainPage), new PropertyMetadata(new List<string>()));
public List<string> Users …Run Code Online (Sandbox Code Playgroud) 在Flex(AS3)中,您可以将属性绑定到表达式/变量/对象.例如,button.enabled = {!obj.name.empty}它可以在其他方面进行非常简洁的GUI验证.
我没有在Visual Studio GUI设计器中看到任何这样的工具,但是想知道.Net/C#中是否存在这种功能,如果存在,在多大程度上?
data-binding ×10
c# ×5
wpf ×3
angularjs ×2
.net ×1
asp.net ×1
binding ×1
checked ×1
combobox ×1
grails ×1
html ×1
javascript ×1
knockout.js ×1
mvvm ×1
onchange ×1
silverlight ×1
winforms ×1
xaml ×1