以下错误触发mysql错误,这是由于查询未将参数绑定到语句。我不明白为什么会这样。
这是else子句返回的错误:
ERROR -> 1064 : You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for the right syntax to
use near '? ORDER BY dateCreated DESC' at line 4`
Run Code Online (Sandbox Code Playgroud)
这是有问题的代码:
$userId = 1;
if ($stmt = $link->query("
SELECT o.id, dateCreated, firstValue
FROM user_orders o
LEFT JOIN order_delivery d ON o.id = d.id
WHERE o.userId = ?
ORDER BY dateCreated DESC
"))
{
$stmt->bind_param("i", $userId);
$stmt->execute();
$stmt->close();
}
else
{
$pageContent …Run Code Online (Sandbox Code Playgroud) ViewModel类:
class MyViewModel : ViewModelBase, INotifyPropertyChanged
{
public string SomeText { get{...} set {...}}
public AnyNonMVVMControl MyControl { get {...} set {...}}
...
}
Run Code Online (Sandbox Code Playgroud)
窗口XAML:
<Grid>
...
<TextBlock Text="{Binding SomeText}" />
<??? Content="{Binding MyControl}" /> <!-- how to bind MyControl to the View? -->
...
</Grid>
Run Code Online (Sandbox Code Playgroud)
分配模型
...
window.DataContext = new MyViewModel(...);
...
Run Code Online (Sandbox Code Playgroud)
我有一个Control,它不是为MVVM设计的.渲染和数据是强耦合的(糟糕的设计解决方案).我在我的viewmodel中有这个控件,并希望将它绑定到我的窗口.但我不想直接在XAML中添加Control,因为此控件还包含业务逻辑和数据 - >我需要在viewmodel中访问它以执行操作.
那么,如何通过Bindings将控件"添加"到窗口?
当谈到我目前在WPF中的绑定需求时,我处于绑定状态(没有双关语).我花了大部分时间试图研究我的问题,我找不到解决问题的可靠方法.这里是:
我正在尝试创建一个用户控件来表示我所称的工作空间(Josh Smith的博客参考).工作区将显示在选项卡控件中.我的目标是使用选项卡式界面来管理我打开的各种文档,就像在一本激动人心的工作簿的浏览器中一样.
每次用户使用新工作区时,该工作区都应显示在选项卡控件中.每个工作空间采用用户控件的形式,每个工作空间都有自己的视图模型.我希望Tab Header能够从我的视图模型中显示一个属性,我认为它可能必须通过我的用户控件作为属性公开.
到目前为止,在我遇到很多问题之前,我最喜欢的最干净的解决方案是使用datatemplates.基本上我做了以下事情:
<DataTemplate x:Key="WorkspaceItem">
<DockPanel Width="120">
<ContentPresenter
Content="{Binding Title}"
VerticalAlignment="Center"
/>
</DockPanel>
</DataTemplate>
<DataTemplate DataType="{x:Type CustomerViewModel}">
<workspace:CustomerWorkspace />
</DataTemplate>
<TabControl ItemsSource="{Binding Workspaces}"
ItemTemplate="{StaticResource WorkspaceItem}"/>
Run Code Online (Sandbox Code Playgroud)
TabControl.ItemsSource绑定到包含所有工作空间的observablecollection(Object).
这项工作很有效,除了两件事:
如果我打开多个客户,那么我打开了多个工作区.由于DataTemplate Recycling,当我从一个选项卡切换到另一个选项卡时,我会丢失状态.所以没有约束的一切都会失去状态.
不同工作区(使用不同的数据模板)之间交换的性能非常慢.
所以...我在SO上找到了另一个用户的建议,将用户控件添加到ObservableCOllection并丢弃数据模板.现在解决了失去国家的问题之一.但是,现在我面临着剩下的两个问题:
然后,我继续在我的代码隐藏中向ObservableCollection添加一个TabItem,并将TabItem.Content属性设置为用户控件的属性.由于我已经删除了DataTemplates的使用,速度问题现在已经消除,因为失败状态问题.但是,我现在遇到了将TabItem.header绑定到我的usercontrol的Custome"Title"属性的问题,该属性应该显示在Tab Header中.
在这篇非常长的帖子之后,我的问题是:
有没有办法使用datatemplates并强制它们为集合中的每个项目创建一个新实例,以防止回收和状态丢失.
1A.有没有比我在上面的帖子中提到的更好的选择?
有没有办法通过Xaml而不是通过Tab项的后端代码构造来完成所有这些?
我在一本关于语言描述的书中看到了这一点
On the other hand, a name can be bound to no object (a dangling pointer),
one object (the usual case), or several objects (a parameter name in a
recursive function).
Run Code Online (Sandbox Code Playgroud)
我们如何将名称绑定到多个对象?我们所谓的数组是不是所有元素具有相同的名称但具有索引?对于递归函数,如下例所示:
x = 0
def f(y):
global x
x += 1
if x < 4 :
y +=100
f(y)
else: return
f(100)
Run Code Online (Sandbox Code Playgroud)
名称是否y绑定了多个以递归方式创建的值,因为y名称表已经将名称绑定到初始值,并使用递归进行复制?
EDITED只需按下此处Visualizer并查看其生成的内容.:)
我花了一天的时间在互联网上搜索我的问题的解决方案但没有成功......理论上这似乎很简单.
我在XAML中有一个RichTextBox.我在我的数据库中有一个名为"content"的字段"LongText"
我只是希望我的数据库以简单的样式(粗体,斜体,下划线)保存RichTextBox的内容,并且我可以调用我的数据库,填充我的数据库中存储的RichTextBox内容,同时保持文本的样式.
之后,我将不得不将这些数据显示为博客,但是......必须已经成功保存并加载数据.
XAML:
<RichTextBox x:Name="nameTextEditor" TabIndex="2" Grid.Row="2" SpellCheck.IsEnabled="True">
Run Code Online (Sandbox Code Playgroud)
C#
FlowDocument doc = new FlowDocument();
StringReader sr = new StringReader(monArticle.Content);
XmlReader xmlReader = XmlReader.Create(sr);
Section sec = XamlReader.Parse(monArticle.Content) as Section;
while (sec.Blocks.Count > 0)
{
var block = sec.Blocks.FirstBlock;
sec.Blocks.Remove(block);
doc.Blocks.Add(block);
}
nameTextEditor.Document = doc;
Run Code Online (Sandbox Code Playgroud)
不要使用错误:"Exception XamlParseException""Donnéesnonvalides au niveau racine.Ligne 1,position 1."
这不是我尝试的唯一代码,但是我在不理解单词的情况下进行测试...为什么"获取RichTextBox的内容"并"在我的数据库中发送"并不容易?
谢谢你的帮助
在这里做一点测试.只有这两个文本框中的第一个显示值"123".为什么不是第二个?
<Window x:Class="Test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:diag="clr-namespace:System.Diagnostics;assembly=WindowsBase"
Title="MainWindow" Height="350" Width="525">
<StackPanel Width="123" x:Name="Panel1">
<TextBox Text="{Binding ElementName=Panel1, Path=Width, diag:PresentationTraceSources.TraceLevel=High}"></TextBox>
<TextBox Text="{Binding Source={RelativeSource AncestorType={x:Type StackPanel}}, Path=Width, diag:PresentationTraceSources.TraceLevel=High}"></TextBox>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
我的View上有一个TextBox,它有一个验证规则:
public class EmptyStringRule : ValidationRule
{
public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
{
if(String.IsNullOrEmpty(value.ToString()))
return new ValidationResult(true,"String Cannot be empty");
return new ValidationResult(true,null);
}
}
Run Code Online (Sandbox Code Playgroud)
输入空字符串时.绑定属性未更新,文本框标记为红色.我需要更新Source但仍然将Marker保留在Textbox周围.(输入稍后由EF再次验证).
我怎么能这样做?
我已经以编程方式创建了一个datagridview.因此,没有绑定源或数据源可以将Datagridview和Binidgnavigator连接到它们.有没有其他方法可以将它们相互连接起来.这是我的datafridview代码
帮我把它连接到bindingNavigator
private void Fill()
{
try
{
if (dataGridView1 != null)
{
dataGridView1.ColumnCount = 11;
dataGridView1.Columns[0].HeaderText = Resources.Form1_Fill_ID;
dataGridView1.Columns[1].HeaderText = Resources.Form1_Fill_Family;
dataGridView1.Columns[2].HeaderText = Resources.Form1_Fill_Cellphone;
dataGridView1.Columns[3].HeaderText = Resources.Form1_Fill_Phone1;
dataGridView1.Columns[4].HeaderText = Resources.Form1_Fill_Phone2;
dataGridView1.Columns[5].HeaderText = Resources.Form1_Fill_Phone3;
dataGridView1.Columns[6].HeaderText = Resources.Form1_Fill_Fax;
dataGridView1.Columns[7].HeaderText = Resources.Form1_Fill_CompanyName;
dataGridView1.Columns[8].HeaderText = Resources.Form1_Fill_Agency;
dataGridView1.Columns[9].HeaderText = Resources.Form1_Fill_Brands;
dataGridView1.Columns[10].HeaderText = Resources.Form1_Fill_Address;
dataGridView1.Columns[0].Name = Resources.Form1_Fill_ID;
dataGridView1.Columns[1].Name = Resources.Form1_Fill_Family;
dataGridView1.Columns[2].Name = Resources.Form1_Fill_Cellphone;
dataGridView1.Columns[3].Name = Resources.Form1_Fill_Phone1;
dataGridView1.Columns[4].Name = Resources.Form1_Fill_Phone2;
dataGridView1.Columns[5].Name = Resources.Form1_Fill_Phone3;
dataGridView1.Columns[6].Name = Resources.Form1_Fill_Fax;
dataGridView1.Columns[7].Name = Resources.Form1_Fill_CompanyName;
dataGridView1.Columns[8].Name = Resources.Form1_Fill_Agency;
dataGridView1.Columns[9].Name = Resources.Form1_Fill_Brands;
dataGridView1.Columns[10].Name …Run Code Online (Sandbox Code Playgroud) 我需要为WinRT应用程序中的列表和组合框实现选择更改事件.我使用的是MvvmCross,但AFAIK这是一个WinRT而不是Mvx特定的问题.System.Windows.Interactivity不适用于WinRT应用程序,因此我无法使用基于i:Interaction.Triggers的技术.我希望以真正的MVVM方式实现绑定,而无需切换到代码隐藏,因此我可以在其他平台上尽可能多地重用.在WinRT应用程序中实现它的合理方法是什么?我没有在MvvmCross样本中找到任何示例.
提前致谢
两个案例都已解决,请查看第一个回答评论的信息.
这段代码编译但在运行时会出错.例外说:
A first chance exception of type 'System.Windows.Markup.XamlParseException' occurred in PresentationFramework.dll.
当我尝试在MultiBinding中为第二个绑定设置源时,会发生Parse异常.我已经尝试了很多方法并挖掘了大约20篇文章,尽管我在这里找不到有什么问题.
我最好的猜测是它以某种方式连接到转换器的错误返回类型.
而且,顺便说一句,当你将TextBox更改为TextBlock时,第一种情况就可以了.第二种情况仍然不起作用.
情况1
XAML:
<UserControl x:Class="Draft.MainControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:draft="clr-namespace:Draft"
xmlns:s="clr-namespace:System;assembly=mscorlib"
Height="350" Width="352">
<UserControl.Resources>
<s:String x:Key="str1">HELLO</s:String>
<s:String x:Key="str2">WORLD</s:String>
<draft:StringConverter x:Key="myStringConverter"/>
</UserControl.Resources>
<Grid>
<TextBox Name="tb1">
<TextBox.Text>
<MultiBinding Converter="{StaticResource myStringConverter}">
<Binding Source="{StaticResource str1}" />
<Binding Source="{StaticResource str2}" />
</MultiBinding>
</TextBox.Text>
</TextBox>
</Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
代码背后:
public class StringConverter : IMultiValueConverter
{
public object Convert( object[] values, Type targetType, object parameter, CultureInfo culture )
{
return ( values[0].ToString() + values[1].ToString() ); …Run Code Online (Sandbox Code Playgroud) binding ×10
wpf ×5
c# ×4
.net ×1
combobox ×1
database ×1
datagridview ×1
datatemplate ×1
listview ×1
mvvm ×1
mvvmcross ×1
mysqli ×1
name-binding ×1
php ×1
python ×1
python-3.x ×1
richtextbox ×1
tabcontrol ×1
tabitem ×1
validation ×1
xaml ×1