我有两个相同大小的列表框,彼此相邻.基本上我使用它们来表示链接的项目...类似于在excel中有2列和多行,比如说,名字在一个名字和另一个名字.
我想知道我是否可以这样做,以便当滚动一个列表框时,另一个列表框与它同步滚动?
希望这是有道理的.谢谢你.
我有一个自定义对象列表:说水果有两个字符串属性名称和颜色.这些都在列表中.
private readonly List<Fruit> fruitList = new List<Fruit>();
Run Code Online (Sandbox Code Playgroud)
然后我将水果对象加载到列表中.
我试图将此列表绑定到WPF Datagrid:
C#:
dgFruit.ItemsSource = "{Binding}";
Run Code Online (Sandbox Code Playgroud)
XAML:
<toolkit:DataGrid Name="dgFruit"
ItemsSource="{Binding Path=fruitList}" >
<toolkit:DataGrid.Columns>
<toolkit:DataGridComboBoxColumn
Header="Name"
SelectedValueBinding="{Binding Path=Name}"
TextBinding="{Binding Path=Name}" Width="5*" />
<toolkit:DataGridComboBoxColumn
Header="Color"
SelectedValueBinding="{Binding Path=Color}"
TextBinding="{Binding Path=Color}" Width="5*" />
</toolkit:DataGrid.Columns>
</toolkit:DataGrid>
Run Code Online (Sandbox Code Playgroud)
他们在组合框中的原因是因为我希望用户能够改变关系.这不是真实的例子,但你明白了.为了这个例子说水果不成熟,所以他们把香蕉的颜色改成绿色:)
我没有运气在数据网格中获取这些项目...并且在轨道上,我想要点击datagridcell中的项目以更改为组合框并显示所有可能类型的水果名称和颜色(因此它们可以更改关系)
这是我得到的错误:
System.Windows.Data Error: 39 : BindingExpression path error: 'Color' property not found on 'object' ''Char' (HashCode=6750311)'. BindingExpression:Path=Color; DataItem='Char' (HashCode=6750311); target element is 'TextBlockComboBox' (Name=''); target property is 'Text' (type 'String')
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?我在xaml中设置colums的原因是我可以将宽度设置为星号并使列宽度相等.
我看到大多数示例使用ObservableCollection,但如果我可以绑定到列表,为什么我必须使用它?
如果我的例子需要进一步澄清,请告诉我
编辑:我现在拥有的:
XAML:
<toolkit:DataGrid Name="dgFruit"
ItemsSource="{Binding}" …Run Code Online (Sandbox Code Playgroud) 我发现我"正在做WPF错误"并且令人沮丧地必须彻底检查我的代码.
我怎么能转换以下内容:
public static class SortName
{
public static int Compare(Person a, Person b)
{
return a.Name.CompareTo(b.Name);
}
}
Run Code Online (Sandbox Code Playgroud)
我称之为:
list.Sort(SortName.Compare);
Run Code Online (Sandbox Code Playgroud)
到ObservableCollection所需的格式.我怎么称呼它.到目前为止,我已经根据我在这里阅读的内容尝试了以下内容
class ObservableCollectionSortName<T> : ObservableCollection<T>
{
public int Compare (Person a, Person b)
{
return a.Name.CompareTo(b.Name);
}
}
Run Code Online (Sandbox Code Playgroud) 说我有两个单独的类,A和B.
我还有Repository类C,它从文本文件中加载一些信息.例如,它有一些方法loadLines(),addLine(),deleteLine().
忽略数据绑定,如何使A和B都在同一个C类上工作.是否可能?
例如,目前,在A类和B类表格中,我有:
var classC = new C();
Run Code Online (Sandbox Code Playgroud)
这导致重复执行.如果我可以从A或B中使用一个c类副本,那会好得多.
编辑:所以使用单例,C类的构造函数何时执行? - 无论哪个班级首先创造它?它只发生在我接受它的时候?
edit1:使用单例模式意味着你应该只在项目解决方案中有一个吗?我可以有多个吗?
我想尝试制作一个有效的删除方法来处理列表.这种情况如下:
比如说,我有一个(可能)庞大的名单:
Alex Smith
Anna Hobb
Bertie Blackman
Bill Clinton
David Smith
David Warner
George Jung
George Washington
William Wobbits
Run Code Online (Sandbox Code Playgroud)
让我们说这是一个List<Person>人有属性FirstName和LastName.如示例中所示,两个人可能共享相同的FirstName.我需要做的是查看列表并删除所有Davids,例如.
我正在循环查找所有大卫,添加到列表DeletePerson,然后再次循环每个DeletePerson并删除.我相信会有更有效的方法吗?效率在这个应用程序中并不重要,但它似乎是一个漫长的方式来做到这一点,我想,因为在第一个名字的字母D之后我们知道我们不会再添加到DeletePerson列表中(假设列表是按字母顺序排序)
谢谢!
我总是看到人们给我代码(我的意思是关于SO之类的问题的代码示例),如:
class MyData{
ObservableCollection<Color> Colors;
ObservableCollection<Fruit> Fruits;
ObservableCollection<Pairs> Pairs;
public void MatchCurrentSelection(){
.....
etc
}
}
}
Run Code Online (Sandbox Code Playgroud)
每次我开始在visual studio中编写代码时,它都会强制我声明可见性,并且总是包含在命名空间中.人们jsut是否将命名空间与其无关?为什么我总是被迫设置可见性?(它默认会自动附加私有)
namespace TheProject
{
public class MyData
{
private ObservableCollection<Colors> Colors;
private ObservableCollection<Fruits> Fruits;
...
etc
Run Code Online (Sandbox Code Playgroud)
我必须在这里遗漏一些东西......故事是什么?
谢谢
试图在我的C#应用程序中发送一些电子邮件.我支持代理 - 这无疑是代码无效的原因.这是我到目前为止:
App.Config:
<system.net>
<defaultProxy enabled="false">
<proxy proxyaddress="xxx.xxx.xxx.xxx"/>
</defaultProxy>
<mailSettings>
<smtp deliveryMethod="Network">
<network host="smtp.gmail.com" port="587"/>
</smtp>
</mailSettings>
</system.net>
Run Code Online (Sandbox Code Playgroud)
代码:
var username = "...";
var password = "...";
var fromEmail = "...";
var toEmail = "...";
var body = "Test email body";
var subject = "Test Subject Email";
var client = new SmtpClient("smtp.gmail.com", 587)
{
Credentials = new NetworkCredential(username, password),
EnableSsl = true
};
try
{
client.Send(fromEmail, toEmail, subject, body);
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
Run Code Online (Sandbox Code Playgroud)
每次我得到System.Net.WebException:无法解析远程名称:'smtp.gmail.com' …
我在SQL Server 2008 R2中有三个表:Country Address和Country_Address
Country 有列:
CountryID Country
1,阿富汗
2,澳大利亚
Address 有列:
AddressID Address
1,5 Smith Smith
Country_Address 有列:
CountryID AddressID
1,1
编辑:所以在这个例子中,5史密斯方式是阿富汗的地址.
我已经清空了表,然后添加了两个国家和一个地址,然后Country_Address在1和1之间的链接.当我尝试将CountryID1从1 更新为时,我不能因为FK约束.我不明白为什么会这样,因为CountryID我试图分配确实存在.那我该如何设法更新呢?
edit1:这是我在SQL Management Studio中尝试进行更新时遇到的错误,我得到InvalidOperationException- "类型'......的模型无法更新." 在Visual Studio中.
没有更新行.
第1行中的数据未提交.错误来源:.Net SqlClient数据提供程序.错误消息:UPDATE语句与FOREIGN KEY约束"FK_Country_Address_Address"冲突.冲突发生在数据库"...",表"dbo.Address",列'AddressID'中.
该语句已终止.
当准备使用jQuery文件时,即$(document).ready(function() { }DOM是否有可能尚未完全加载?
我使用了一些3 次第三方工具(Telerik的网格),并建立一个客户端模板来显示一个复选框来代替,就像这样.码:
.ClientTemplate("<input type='checkbox' name='checkedRecords' value='<#= OrderID #>' />")
Run Code Online (Sandbox Code Playgroud)
我问的原因是我试图将事件连接到所有要监视的复选框change:
$(':input').change(
function () {
alert('you fired!');
});
Run Code Online (Sandbox Code Playgroud)
我在Telerik网格代码之外手动设置了一个复选框,它连接到复选框更改,但telerik网格内的复选框都没有...
在那种情况下 - 是否有解决方法?
var fileOpen = new OpenFileDialog(); var clickedOk = fileOpen.ShowDialog(); if(!((bool)clickedOk))return;
var path = fileOpen.FileName;
var diPath = new DirectoryInfo(path);
var fiPath = new FileInfo(path);
Debug.WriteLine(diPath.Exists);
Run Code Online (Sandbox Code Playgroud)
我只是想知道为什么diPath.Exists在这种情况下是假的?由于用户选择了一个文件,该目录必须存在!?它确实......
我已经使用了一个使用的工作,Directory.Exists(fiPath.DirectoryName)但似乎很奇怪,上面的工作不起作用,并且需要其他var来检查我知道存在的东西,并且应该只能使用diPath,这有点令人恼火.这是怎么回事?
还有一个相关的问题,说我有一个目录C:\ random\spot \这里的directoryinfo为什么没有方法获取该字符串"C:\ random\spot\here"它似乎我只能得到父"点"或姓名"在这里".也许我错过了什么.
谢谢,
我的WPF应用程序正在读取文本文件并填充列表框.
每当我的文本被短划线符号(" - ")包围时,记事本中的行将如下所示,例如"SAMPLE - TEXT"
当它在应用程序中显示时,短划线变成一个问号!?!?!?
然后我有一个Export按钮,它将这些按钮写回文本文件.当这个符号被写回来时,在记事本中它会变成一个正方形!?!?!?
为什么发生这种情况?请看截图
只是寻找一些帮助,以解决以下问题的最佳方法:
我有一堆拨打的号码,不要以为你需要我给你看,但是例如
006789 1234
006656 1234
006676 1234
006999 1234
007000 1234
006999 6789
Run Code Online (Sandbox Code Playgroud)
现在:我还有一个前缀列表(前缀是首先拨打的位,也告诉你呼叫的去向(重要位)).重要的是 - 它们具有领先的0,并且它们具有不同的长度.
比如说
006789 = australia
006789 = russia
006656 = france
006676 = austria
0069 = brazil
00700 = china
Run Code Online (Sandbox Code Playgroud)
所以我要做的是编写C#算法来查找要应用的前缀.
逻辑的工作原理如下,比如我们有一个拨打的号码和这些前缀
dialled number:0099876 5555 6565,
prefix1: 0099876 = Lyon (France)
prefix2: 0099 = France
Run Code Online (Sandbox Code Playgroud)
现在两个前缀都适用,除了"更详细的一个"总是获胜.即这个电话是里昂(法国),0099876应该是结果,即使0099也适用.
让我开始使用这个算法的任何帮助都会很棒,因为看着它,我不确定我是否应该比较字符串或整数!我有.Contains字符串,但正如我的例子中所描述的那样,如果前缀在数字的后面,则不能正常工作
即
6999 6978
6978 1234
Run Code Online (Sandbox Code Playgroud)
干杯!!!
我正在使用jQuery方法$.getJSON更新某些级联下拉列表中的数据,特别是如果没有为下拉列表返回任何内容的默认值,例如"NONE".
我只想澄清我的逻辑应该如何进行.
var hasItems = false;
$.getJSON('ajax/test.json', function(data) {
hasItems = true;
//Remove all items
//Fill drop down with data from JSON
});
if (!hasItems)
{
//Remove all items
//Fill drop down with default value
}
Run Code Online (Sandbox Code Playgroud)
但我不认为这是对的.无论我是否收到数据,我都会进入该功能吗?我想我真的想检查数据对象包含的东西 - 设置我的布尔值hasItems.
c# ×10
wpf ×5
algorithm ×2
class ×2
javascript ×2
jquery ×2
list ×2
boolean ×1
class-design ×1
datagrid ×1
dom ×1
encoding ×1
fileinfo ×1
foreign-keys ×1
getjson ×1
gmail ×1
json ×1
listbox ×1
proxy ×1
send ×1
smtpclient ×1
sql ×1
text ×1
visibility ×1