小编Tom*_*try的帖子

无法读取类实例中的const?

当编译器抱怨这个时,我有点意外:

public class UsefulClass
{
    public const String RatingName = @"Ratings\rating";
}

public class OtherClass
{
    public void SomeFunc()
    {
        UsefulClass useful = new UsefulClass();
        String rating = useful.RatingName;
    }
}
Run Code Online (Sandbox Code Playgroud)

编译器说,"无法使用实例引用访问静态成员;而是使用类型名称对其进行限定"

这不是问题,String rating = UsefulClass.RatingName;工作正常.我只是好奇这背后的想法是什么?我有一个带有公共常量的公共类的实例,为什么我不能以这种方式获取数据?

c# const

22
推荐指数
2
解决办法
2万
查看次数

从添加/删除程序中删除错误的安装

我使用Wix和Burn为我的应用程序创建了一个自定义boot-strapper,但是在学习的时候我设法安装了几个早期的变种,它们不会卸载.我想我通过在调用PlanComplete之前运行Engine.Apply来创建问题.

在"添加/删除"程序中构建列表的信息在哪里?手动删除孤立行的最佳方法是什么?

更新 - 我应该说我在64位Windows 7企业版,Service Pack 1上.

install windows-installer uninstall windows-7 windows-7-x64

21
推荐指数
1
解决办法
6万
查看次数

当我"新"它时,ObservableCollection失去绑定

我的UI上有一个ListBox,它绑定到ObservableCollection的属性.我在视图模型的构造函数中将一个ObservableCollection的新实例设置为属性,我可以使用表单上的按钮向其添加项目.这些在列表中可见.

一切都很好.

但是,如果我在按钮回调中使用new重新初始化该属性,则会破坏绑定,并且UI不再显示集合中的内容.

我假设绑定将继续查找属性的值,但它可能与新的销毁的引用相关联.

我做对了吗?任何人都可以扩展它的链接方式吗?当我的视图模型不了解视图时,有没有办法重新绑定它?

c# wpf binding

17
推荐指数
2
解决办法
5599
查看次数

WPF GridView具有动态定义

我想使用ListView的GridView模式来显示我的程序将从外部源接收的一组数据.数据将包含两个数组,一个是列名,另一个是用于填充控件的字符串值.

我没有看到如何创建一个合适的类,我可以用作ListView中的Item.我知道填充Items的唯一方法是将它设置为具有表示列的属性的类,但我不知道运行时之前的列.

我可以动态创建一个ItemTemplate,如下所述:在运行时DYNAMICALLY创建WPF ItemTemplate但它仍然让我不知道如何描述实际数据.

任何帮助感激不尽.

wpf listview gridview

12
推荐指数
2
解决办法
5万
查看次数

使用ContentProvider时出现"错误代码5:数据库被锁定"

我有一个应用程序在一个单独的进程中运行带有服务的活动,该进程已启动并绑定到该活动.该服务包含一个处理程序,用于发布延迟后要运行的runnable.

我希望每个组件都能登录到数据库,因此我实现了一个处理数据库访问的内容提供程序,我通过扩展的AsyncTask子类从服务或活动中调用它.

这一切精美的作品在模拟器上,但是当我在调试我的手机上运行它,我得到我的数据库写零星的数据库锁定错误:

UPDATE

我对数据库处理做了一些更改,错误略有改变.

ERROR/Database(15235): Error inserting MY_MESSAGE
ERROR/Database(15235): android.database.sqlite.SQLiteException: error code 5: database is locked
ERROR/Database(15235):     at android.database.sqlite.SQLiteStatement.native_execute(Native Method)
ERROR/Database(15235):     at android.database.sqlite.SQLiteStatement.execute(SQLiteStatement.java:61)
ERROR/Database(15235):     at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1591)
ERROR/Database(15235):     at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1435)
ERROR/Database(15235):     at mypackagename.DatabaseHelper.insertLogging(DatabaseHelper.java:190)
ERROR/Database(15235):     at mypackagename.ContentProvider.insert(ContentProvider.java:139)
ERROR/Database(15235):     at android.content.ContentProvider$Transport.insert(ContentProvider.java:198)
ERROR/Database(15235):     at android.content.ContentResolver.insert(ContentResolver.java:604)
ERROR/Database(15235):     at mypackagename.Activity$LogToDatabase.doInBackground(Activity.java:642)
ERROR/Database(15235):     at mypackagename.Activity$LogToDatabase.doInBackground(Activity.java:1)
ERROR/Database(15235):     at android.os.AsyncTask$2.call(AsyncTask.java:185)
ERROR/Database(15235):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
ERROR/Database(15235):     at java.util.concurrent.FutureTask.run(FutureTask.java:138)
ERROR/Database(15235):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
ERROR/Database(15235):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
ERROR/Database(15235):     at java.lang.Thread.run(Thread.java:1019)
Run Code Online (Sandbox Code Playgroud)

之前我没有提供太多细节,因为我认为这是一个不同进程或线程的问题,但现在我认为问题更可能位于调用数据库的代码中.

问题:

1)当我使用ContentProvider时,为什么我会敲锁?
2)为什么这不会出现在等效的API 2.3.3仿真器上?
3)我的代码没有捕获异常的事实是否意味着错误处理得当且我可以忽略它?
4)我在另一个地方读到有人建议调整忙碌超时.我该怎么办?

具有讽刺意味的是,我的调试日志记录导致错误并没有丢失.

如果我无法解决它,我的下一步是将日志消息捆绑在一个列表中,并一次一批地将它们转储出来.

这是通过代码到错误的路径:

活动:

private void logDatabaseMessage(String …
Run Code Online (Sandbox Code Playgroud)

sqlite android locking

6
推荐指数
1
解决办法
2万
查看次数

Android TextView向下偏移

我有一个活动,在LinearLayout中有两个按钮和一个TextView.我的TextView向下偏移,文本不适合框内.你能解释一下发生了什么吗?我认为它与填充有关,我已经阅读了几篇关于TextView填充的危险的讨论,但这并不能解释为什么文本在底部被截断.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:background="#800080">

    <Button
        android:text="This"
        android:background="@drawable/button_red" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
    />
    <Button
        android:text="That"
        android:background="@drawable/button_green" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
    />
    <TextView 
        android:text="Copious amounts of text that overflows onto several lines on a small screen, causing the TextView to dangle below the buttons.  Why it does this I can't imagine.  I only hope someone can help me with this." 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#533f93"
    />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

此代码生成此显示:

用户界面

紫色是LinearLayout,蓝色是TextView.如您所见,TextView的顶部低于按钮的顶部,其底部低于LinearLayout的底部.当我向TextView添加文本时,LinearLayout会适当地增加其高度,但由于TextView是偏移的,所以我总是丢失最后一行的底部.

我运行了Hierarchy Viewer,它给了我这个线框:

来自层次结构查看器的线框图像

它显示了顶部的垂直偏移,但是错过了TextView的底部.选择了LinearLayout的相同线框如下所示:

来自层次结构查看器的线框图像 - 已选择LinearLayout

根据Hierarchy Viewer,按钮的顶部是0,但TextView的顶部是7.我尝试了各种修复程序,大多是从这个网站中挑选出来的:

    android:paddingTop="0dp"
    android:background="@null"
    android:includeFontPadding="false"
Run Code Online (Sandbox Code Playgroud)

这些都没有解决我的问题.

android gravity textview android-layout

5
推荐指数
1
解决办法
3118
查看次数

EventLog实例与静态方法 - 首选项?

当写入事件日志时,我可以创建一个EventLog实例,将其作为成员变量保留,并在每次要记录消息时在其上调用WriteEntry(字符串消息).

或者,我可以只调用静态版本:EventLog.WriteEntry(字符串源,字符串消息).

我是否应该选择另一种替代方案?

在我目前的情况下,我打算有一个或两个来源的自定义日志.

c# event-log

4
推荐指数
1
解决办法
1956
查看次数

为什么float的二进制序列化使用55个字节?

我有一个任务是花费数百万个浮点数并将它们以5,000个批量存储在数据库中,作为二进制文件.这迫使我学习有关序列化性能的有趣事情.

令我惊讶的一件事是序列化数据的大小,比我预期的要高十倍.这个测试向我展示了一个四字节的浮点数被串行化为55个字节,一个8字节的双精度数转换为59个字节.

这里发生了什么?我希望它简单地将浮点值分成四个字节.其他51个字节是什么?

private void SerializeFloat()
{
    Random rnd = new Random();
    IFormatter iFormatter = new BinaryFormatter();

    using (MemoryStream memoryStream = new MemoryStream(10000000))
    {
        memoryStream.Capacity = 0;
        iFormatter.Serialize(memoryStream, (Single)rnd.NextDouble());
        iFormatter.Serialize(memoryStream, rnd.NextDouble());
    }
}
Run Code Online (Sandbox Code Playgroud)

c# serialization

3
推荐指数
1
解决办法
1777
查看次数

在向服务器资源管理器添加数据连接时无法选择系统DSN

在Visual Studio 2010中,尝试使用服务器资源管理器添加数据连接.

在" 更改数据源"屏幕中,我选择" Microsoft ODBC数据源",它将我移至" 添加连接"屏幕.但是,使用用户或系统数据源名称的下拉列表:仅包含我的用户DSN.我的系统DSN未显示.

我在Windows 7,64位上运行并以管理员身份运行Visual Studio.缺少的系统DSN使用SQL Server Native Client 10.0,但使用相同驱动程序的等效用户DSN将显示在列表中.

sql-server odbc visual-studio-2010

1
推荐指数
1
解决办法
4145
查看次数

是什么触发了UI上的绑定?

我在WPF窗口中有一个TextBox,我从后面的代码中填充(在用户从OpenFileDialog中选择一个后,使用文件名).

虽然我的TextBox.Text绑定到我的ViewModel类中的String属性,但是当文本设置为TextBox.Text时,不会填充该属性.

如果我输入TextBox,则会填充属性,因此必须有一些事件触发或在用户输入期间发生的事情,而不是我通过代码设置值时.

我错过了正确绑定的步骤是什么?

另外,属性上的set方法是在属性更改时调用还是UI?或两者?如果更改UI调用set方法,该方法触发PropertyChanged事件以更新UI,那么什么会永久停止此循环?

(我知道我可以直接设置属性,但我觉得我对绑定缺乏了解,我希望这有助于填补一些空白.)

我的示例代码:

<Window x:Class="ConfigurationViewer.ViewerWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:ConfigurationViewer"
    Title="Configuration Viewer" Height="512" Width="714" >
    <Window.DataContext>
        <local:TaskViewModel x:Name="_model"/>
    </Window.DataContext>
    <DockPanel>
        <StackPanel DockPanel.Dock="Top" Orientation="Horizontal">
            <TextBlock Text="Configuration file" Margin="2" VerticalAlignment="Center" />
            <TextBox Height="29" Margin="2" Name="textFilePath" Width="277" Text="{Binding Path=ConfigurationPath}" />
            <Button Content="Browse ..." Margin="2" Name="buttonBrowseFile" Width="98" Click="buttonBrowseFile_Click" />
            <Button Content="Open" Margin="2" Name="buttonOpenFile" Width="98" Click="buttonOpenFile_Click"  />
        </StackPanel>
    </DockPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)
    public partial class ViewerWindow : Window
    {
        public ViewerWindow()
        {
            InitializeComponent();
        }

        private void buttonBrowseFile_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog openDialog = new …
Run Code Online (Sandbox Code Playgroud)

c# data-binding wpf

0
推荐指数
1
解决办法
101
查看次数