我希望绑定到代码隐藏中的属性。到目前为止,我发现并没有完全帮助我,但它让我到了我的位置。
我要做的是将bool
绑定到DataTrigger
,以便我可以设置一个" *"编辑内部表时文件夹名称旁边,表示现在可以选择保存。我知道我的事件处理设置正确,因为当我调试属性时,我希望它是值。
从我所见过的一切都应该可行,但大多数例子都与设置文本有关。这是包含引用的绑定的代码块:
<HierarchicalDataTemplate DataType="{x:Type vm:EditableDatabaseNode}" ItemsSource="{Binding Nodes}">
<StackPanel Orientation="Horizontal">
<Image Source="Resources\db.png" Style="{StaticResource tvImage}"/>
<TextBlock Text="{Binding Name}"/>
<TextBlock Name="tb_modfied" Text=""/>
</StackPanel>
<HierarchicalDataTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=Window}, Path=IsChanged}" Value="True">
<Setter TargetName="tb_modfied" Property="Text" Value="*"/>
</DataTrigger>
</HierarchicalDataTemplate.Triggers>
</HierarchicalDataTemplate>
代码块的第8行我遇到了麻烦,以防您无法推断出来。
编辑:如果像我一样,你又懒得阅读评论。该物业是我的代码背后的公共财产。至于绑定相关的错误,有一个NullReferenceException
因为绑定没有挂钩任何东西
以下是我的错误所说的:
System.Windows.Data错误:17:无法获得&#39; IsChanged&#39;来自&#39;&#39;的值(类型&#39;布尔&#39;) (键入&#39; MainWindow&#39;)。 BindingExpression:路径= IsChanged;的DataItem =&#39;主窗口&#39; (名称=&#39;&#39);目标元素是&#39; ContentPresenter&#39; (名称=&#39; PART_Header&#39);目标财产是“NoTarget&#39; (类型&#39;对象&#39;)TargetInvocationException:&#39; System.Reflection.TargetInvocationException:调用目标抛出了异常。 ---&GT; System.NullReferenceException:未将对象引用设置为对象的实例。
答案 0 :(得分:3)
这里有两个问题。
首先,您需要从<?php
include 'connection.php';
$empty_value_found = false;
$file = $_FILES['file']['tmp_name'];
$handle = fopen ($file,"r");
while(($fileop = fgetcsv($handle,1000,",")) !==false){
$first = trim($fileop[0]);
$last = trim($fileop[1]);
$birthday = trim($fileop[2]);
$age = trim($fileop[3]);
$address = trim($fileop[4]);
if (
empty($first)
|| empty($last)
|| empty($birthday)
|| empty($age)
|| empty($address)
) {
$empty_value_found = true;
echo "empty field please check";
break; // stop our while-loop
}
}
// now we check - if there no empty values
if (!$empty_value_found) {
// we can go through our file again and insert values,
// code is similar to what you have
$sql = mysqli_query($conn,"INSERT INTO `mytable` (first, last, birthday, age, address) VALUES ('$first','$last','$birthday','$age','$address')");
$getdata = "SELECT * FROM mytable";
$results = mysqli_query($conn,$getdata);
if(mysqli_num_rows($results) >=1){
echo "<table><tr><th>First</th><th>Last</th><th>Birthday</th><th>Age</th> <th>Address</th></tr>";
}
while($row = mysqli_fetch_assoc($results)){
echo "<tr><td>" . $row["first"]. "</td><td>" . $row["last"]. "</td><td>" . $row["birthday"]. "</td><td>" . $row["age"]. "</td><td>" . $row["address"]. "</td></tr>";
}
}
echo "</table>";
mysqli_close($conn);
?>
代码
Text=""
<TextBlock>
内定义的属性优先于任何触发值,因此值不会改变。
您可以在MSDN's page on Dependency Property Precedence
上详细了解相关信息第二个问题是Trigger本身的绑定。
设置为
<Tag>
这意味着“向后看到可见树,直到找到第一个Binding="{Binding RelativeSource={RelativeSource AncestorType=Window}, Path=IsChanged}"
对象,并检查Window
属性”。除了我很确定Window类没有名为IsChanged的属性。
您很可能希望绑定到当前项的DataContext,因此您的绑定应该类似于
IsChanged