2013-08-13 67 views
11

nơi tôi có thể tải xuống các đoạn trích cho Visual Studio, pf pmvx, cmvx và các đoạn trích khác? tôi mặc dù những người sẽ có sẵn trên các dự án github, nhưng không thể tìm thấy chúng ...Đoạn mã MVVMCross cho Visual Studio?

+0

SO không phải để tìm kiếm liên kết tải xuống. Dùng thử Google. – Raptor

Trả lời

18

Tôi đã tạo của riêng mình. Hãy nhớ rằng đây là mẫu của ReSharper.

mvxcom -> cho lệnh

#region $region$ command 
private MvxCommand _$NAME$Command; 

public ICommand $PNAME$Command 
{ 
    get 
    { 
     _$NAME$Command = _$NAME$Command ?? new MvxCommand(Do$PNAME$Command); 
     return _$NAME$Command; 
    } 
} 

private void Do$PNAME$Command() 
{ 
    $END$   
} 
#endregion 

mvxprop -> cho Thuộc tính

#region $region$ 
private $TYPE$ _$NAME$; 
public $TYPE$ $PNAME$ 
{ 
get { return _$NAME$; } 
set { _$NAME$ = value; RaisePropertyChanged(() => $PNAME$); } 
} 
#endregion 
$END$ 

mvxset -> Binding Set

var set = this.CreateBindingSet<$VIEW$, $VIEW$Model>(); 
set.Bind($ELEMENT$).To(vm => vm$END$); 
set.Apply(); 

Bạn có thể thêm chúng vào ReSharper của bạn sử dụng ReSharper> Trình khám phá mẫu> Mẫu trực tiếp> Mẫu mới.

Vui lòng thay đổi chúng theo cách bạn muốn.

+0

Xin chào, cảm ơn bạn đã chia sẻ. Tôi không thích sử dụng dấu gạch dưới, có thể đặt tên trường bắt đầu bằng một chữ cái nhỏ và tên thuộc tính bắt đầu bằng tên vốn (vì vậy nó sẽ chỉ có một giá trị $ NAME)? –

+0

Và một vấn đề khác: trong thuộc tính setter của tập lệnh của bạn là 1 dòng, nhưng trong VS nó trở thành 4 lót, có thể sửa lỗi đó không? –

+1

cho câu hỏi số 1, bạn có thể sử dụng $ NAME và $ PNAME và sử dụng các chữ cái nhỏ cho $ NAME tuy nhiên, ở trên được căn chỉnh với lược đồ mặc định của Resharper. # 2 có thể là một số cấu hình thiết lập trong VS của bạn để phá vỡ các dòng dài hơn một độ dài nhất định. Đối với tôi, nó luôn luôn là một dòng. – Aboo

3

Nếu tôi đúng trong suy đoán của tôi, bạn đang đề cập đến các phím tắt mà Stuart sử dụng trong bản demo của mình cho MvvmCross. Đây là những đoạn mã mà anh ta đã viết và gán cho các phím tắt bằng cách sử dụng ReSharper và không có sẵn công khai, mặc dù nếu bạn yêu cầu độc đáo chúng có thể được xuất và chia sẻ. Tất nhiên, bạn luôn có thể tạo 'Mẫu trực tiếp' của riêng mình bằng cách sử dụng this tutorial

+1

Vâng, bạn nói đúng, tôi đang nói về chúng. Tôi mặc dù chúng đã có sẵn, vì đó là một buster năng suất thực sự. MVVMlight cho thấy điều này trong thiết lập của mình, mặc dù Cross đã làm như vậy. Hope Stuart đọc nội dung này và chia sẻ thêm một điều nữa với chúng tôi. Dù sao, cảm ơn bạn. – Sergio

6

Và đây là phiên bản gốc của các đoạn mã dựa trên câu trả lời của Aboo ở trên.

<?xml version="1.0" encoding="utf-8"?> 
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> 
    <CodeSnippet Format="1.0.0"> 
    <Header> 
     <Title>MvvMCross Property</Title> 
     <Description>Insert a property block with a backing field and property change notification</Description> 
     <Shortcut>mvxprop</Shortcut> 
     <Author>Andrew Coates (based on Aboo's SO ReSharper Answer)</Author> 
     <HelpUrl>http://stackoverflow.com/questions/18200679/mvvmcross-code-snippets-for-visual-studio</HelpUrl> 
    </Header> 
    <Snippet> 
     <Declarations> 
     <Literal> 
      <ID>backingfield</ID> 
      <ToolTip></ToolTip> 
      <Default>propertyName</Default> 
     </Literal> 
     <Literal> 
      <ID>property</ID> 
      <ToolTip></ToolTip> 
      <Default>PropertyName</Default> 
     </Literal> 
     <Literal> 
      <ID>propertyType</ID> 
      <ToolTip></ToolTip> 
      <Default>int</Default> 
     </Literal> 
     </Declarations> 
     <Code Language="CSharp"> 
     <![CDATA[private $propertyType$ $backingfield$; 
     public $propertyType$ $property$ 
     { 
      get { return $backingfield$; } 
      set { if($backingfield$ == value) return; $backingfield$ = value; RaisePropertyChanged(() => $property$); } 
     } 
     $end$]]> 
     </Code> 
    </Snippet> 
    </CodeSnippet> 
    <CodeSnippet Format="1.0.0"> 
    <Header> 
     <Title>MvvMCross Command</Title> 
     <Description>Insert a Command declaration for an MvvMCross View Model</Description> 
     <Shortcut>mvxcom</Shortcut> 
     <Author>Andrew Coates (based on Aboo's SO ReSharper Answer)</Author> 
     <HelpUrl>http://stackoverflow.com/questions/18200679/mvvmcross-code-snippets-for-visual-studio</HelpUrl> 
    </Header> 
    <Snippet> 
     <Declarations> 
     <Literal> 
      <ID>backingfield</ID> 
      <ToolTip></ToolTip> 
      <Default>commandName</Default> 
     </Literal> 
     <Literal> 
      <ID>Name</ID> 
      <ToolTip></ToolTip> 
      <Default>CommandName</Default> 
     </Literal> 
     </Declarations> 
     <Code Language="CSharp"> 
     <![CDATA[private MvxCommand $backingfield$Command; 

     public MvxCommand $Name$Command 
     { 
      get 
      { 
      $backingfield$Command = $backingfield$Command ?? new MvxCommand(Do$Name$Command); 
      return $backingfield$Command; 
      } 
     } 

     private void Do$Name$Command() 
     { 
      $end$ 
     } 

     ]]> 
     </Code> 
    </Snippet> 
    </CodeSnippet> 
    <CodeSnippet Format="1.0.0"> 
    <Header> 
     <Title>MvvMCross Binding Set</Title> 
     <Description>Create a binding set and bind an element</Description> 
     <Shortcut>mvxset</Shortcut> 
     <Author>Andrew Coates (based on Aboo's SO ReSharper Answer)</Author> 
     <HelpUrl>http://stackoverflow.com/questions/18200679/mvvmcross-code-snippets-for-visual-studio</HelpUrl> 
    </Header> 
    <Snippet> 
     <Declarations> 
     <Literal> 
      <ID>viewName</ID> 
      <ToolTip></ToolTip> 
      <Default>viewName</Default> 
     </Literal> 
     <Literal> 
      <ID>element</ID> 
      <ToolTip></ToolTip> 
      <Default>element</Default> 
     </Literal> 
     </Declarations> 
     <Code Language="CSharp"> 
     <![CDATA[var set = this.CreateBindingSet<$viewName$View, $viewName$ViewModel>(); 
     set.Bind($element$).To(vm => vm$end$); 
     set.Apply(); 
     ]]> 
     </Code> 
    </Snippet> 
    </CodeSnippet> 
</CodeSnippets> 
+0

Tôi đã tìm thấy phiên bản cập nhật này bao gồm một đoạn mã cho các lệnh không đồng bộ: http://artm-blog.blogspot.com/2017/05/visual-studio-xamarin-mvvmcross-code.html – user1202032

1

tôi sửa đổi @ câu trả lời Coasty để bao gồm một lệnh async chuyển thể từ https://stackoverflow.com/questions/17187113/how-can-i-use-async-in-an-mvvmcross-view-model và thay đổi các phím tắt để họ không còn va chạm với các không gian tên mvx.

<?xml version="1.0" encoding="utf-8"?> 
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> 
    <CodeSnippet Format="1.0.0"> 
    <Header> 
     <Title>MvvmCross Property</Title> 
     <Description>Insert a property block with a backing field and property change notification</Description> 
     <Shortcut>mvvmcrossprop</Shortcut> 
     <Author>Andrew Coates (based on Aboo's SO ReSharper Answer)</Author> 
     <HelpUrl>https://stackoverflow.com/questions/18200679/MvvmCross-code-snippets-for-visual-studio</HelpUrl> 
    </Header> 
    <Snippet> 
     <Declarations> 
     <Literal> 
      <ID>backingfield</ID> 
      <ToolTip></ToolTip> 
      <Default>propertyName</Default> 
     </Literal> 
     <Literal> 
      <ID>property</ID> 
      <ToolTip></ToolTip> 
      <Default>PropertyName</Default> 
     </Literal> 
     <Literal> 
      <ID>propertyType</ID> 
      <ToolTip></ToolTip> 
      <Default>int</Default> 
     </Literal> 
     </Declarations> 
     <Code Language="CSharp"> 
     <![CDATA[private $propertyType$ $backingfield$; 
     public $propertyType$ $property$ 
     { 
      get { return $backingfield$; } 
      set { $backingfield$ = value; RaisePropertyChanged(() => $property$); } 
     } 
     $end$]]> 
     </Code> 
    </Snippet> 
    </CodeSnippet> 
    <CodeSnippet Format="1.0.0"> 
    <Header> 
     <Title>MvvmCross Command</Title> 
     <Description>Insert a Command declaration for an MvvmCross View Model</Description> 
     <Shortcut>mvvmcrosscom</Shortcut> 
     <Author>Andrew Coates (based on Aboo's SO ReSharper Answer)</Author> 
     <HelpUrl>https://stackoverflow.com/questions/18200679/MvvmCross-code-snippets-for-visual-studio</HelpUrl> 
    </Header> 
    <Snippet> 
     <Declarations> 
     <Literal> 
      <ID>backingfield</ID> 
      <ToolTip></ToolTip> 
      <Default>commandName</Default> 
     </Literal> 
     <Literal> 
      <ID>Name</ID> 
      <ToolTip></ToolTip> 
      <Default>CommandName</Default> 
     </Literal> 
     </Declarations> 
     <Code Language="CSharp"> 
     <![CDATA[private MvxCommand $backingfield$Command; 

     public MvxCommand $Name$Command 
     { 
      get 
      { 
      $backingfield$ = $backingfield$ ?? new MvxCommand(Do$Name$); 
      return $backingfield$; 
      } 
     } 

     private void Do$Name$() 
     { 
      $end$ 
     } 

     ]]> 
     </Code> 
    </Snippet> 
    </CodeSnippet> 
    <CodeSnippet Format="1.0.0"> 
    <Header> 
     <Title>MvvmCross Async Command</Title> 
     <Description>Insert an Async Command declaration for an MvvmCross View Model</Description> 
     <Shortcut>mvvmcrossacom</Shortcut> 
     <Author>Benjamin Hysell (based on Andrew Coates Command Answer)</Author> 
     <HelpUrl>https://stackoverflow.com/questions/18200679/MvvmCross-code-snippets-for-visual-studio</HelpUrl> 
    </Header> 
    <Snippet> 
     <Declarations> 
     <Literal> 
      <ID>backingfield</ID> 
      <ToolTip></ToolTip> 
      <Default>commandName</Default> 
     </Literal> 
     <Literal> 
      <ID>Name</ID> 
      <ToolTip></ToolTip> 
      <Default>CommandName</Default> 
     </Literal> 
     </Declarations> 
     <Code Language="CSharp"> 
     <![CDATA[private MvxCommand $backingfield$Command; 

     public MvxCommand $Name$Command 
     { 
      get 
      { 
      $backingfield$ = $backingfield$ ?? new MvxCommand(async() => await Do$Name$()); 
      return $backingfield$; 
      } 
     } 

     private async Task Do$Name$() 
     { 
      $end$ 
     } 

     ]]> 
     </Code> 
    </Snippet> 
    </CodeSnippet> 
    <CodeSnippet Format="1.0.0"> 
    <Header> 
     <Title>MvvmCross Binding Set</Title> 
     <Description>Create a binding set and bind an element</Description> 
     <Shortcut>mvvmcrossset</Shortcut> 
     <Author>Andrew Coates (based on Aboo's SO ReSharper Answer)</Author> 
     <HelpUrl>https://stackoverflow.com/questions/18200679/MvvmCross-code-snippets-for-visual-studio</HelpUrl> 
    </Header> 
    <Snippet> 
     <Declarations> 
     <Literal> 
      <ID>viewName</ID> 
      <ToolTip></ToolTip> 
      <Default>viewName</Default> 
     </Literal> 
     <Literal> 
      <ID>element</ID> 
      <ToolTip></ToolTip> 
      <Default>element</Default> 
     </Literal> 
     </Declarations> 
     <Code Language="CSharp"> 
     <![CDATA[var set = this.CreateBindingSet<$viewName$View, $viewName$ViewModel>(); 
     set.Bind($element$).To(vm => vm$end$); 
     set.Apply(); 
     ]]> 
     </Code> 
    </Snippet> 
    </CodeSnippet> 
</CodeSnippets>